
PHP код:
Какие преимущества есть у твоего подхода?
Это не мой подход, а подход с точки зрения Объектно-Ориентированного Программирования. (ООП)
Преимущества. Даже лень перечислять...
1) Можно эту же панель не переписывая использовать в любых других проектах, ведь кнопки создаются через методы addButton() и удаляются через removeButton() снаружи панели.
2) Логично, что панель выполняет лишь свои функции - является панелью, в которую можно добавить кнопки или удалить из неё кнопки.
3) Логично, что кнопки являются кнопками и выполняют лишь свою функцию, не меняют никаких xml.
4) Конечно, В КРАЙНЕМ СЛУЧАЕ, НУ ВДРУГ НУ ВООБЩЕ ППЦ КАК НАДА БУДИТ, можно создавать кнопки в панели, используя её же методы из конструктора =) Для справки)
5) Скачав классы Panel, Button не нужно лезть внутрь этих классов, чтобы знать как ими пользоваться. Достаточно написать var panel:Panel = new Panel();
напишите
panel.
И среда(FlashDevelop) сама подсказывает, какие есть методы у этого класса. И из их названий точно и ясно, что они делают.
addButton() в переводе значит "добавить кнопку", для справки.
removeButton() в переводе "убрать кнопку".
набор передаваемых аргументов тоже достаточно ясно описан и подсказывается средой=)
взгляните на код

Код AS3:
public function init(e:Event = null):void
{
if (hasEventListener(Event.ADDED_TO_STAGE)) removeEventListener(Event.ADDED_TO_STAGE, init);
//entry
var panel:Panel = new Panel();
panel.addButton("Start game", buttonClicked);
panel.addButton("Exit", buttonClicked);
panel.addButton("Options", buttonClicked);
panel.removeButton("Options");
addChild(panel);
}
private function buttonClicked(e:MouseEvent):void
{
switch((e.target as Button).caption)
{
case "Start game":
//начинаем игру
break;
case "Exit":
//выходим из игры
break;
default:
throw new Error("No action for this button");
}
}
Разве из него не сразу ясно, что он делает? Задача программиста - упрощать себе работу, а не усложнять.
Поэтому мы пишем набор инструментов, подобно классу Button(кнопка) или Panel(панель).
При желании можно добавить классу Panel свойство orientation
и 2 константы - Panel.HORIZONTAL, Panel.VERTICAL.
Они будут определять, как будут располагаться кнопки - горизонтально или вертикально.
Вот так вот мы и работаем)
Улучшаем наши инструменты потихоньку.
Потом мы можем в любой проект сунуть эти классы и они будут работать.
Чтобы не копаться в их коде, мы пишем снаружи все обработчики кликов и пользуемся их свойствами и методами.
P.S. Если хотите проверить, как будет работать код - могу ещё дописать класс Button
