Показать сообщение отдельно
Старый 29.01.2015, 21:17
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
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
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 29.01.2015 в 22:39.