Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.04.2013, 10:56
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Question Мувиклип: код таймлайна vs код класса

Хотелось задать несколько нуб-вопросов общего плана.

1. Каковы отличия кода мувиклипа, находящегося внутри его таймлайна, от кода, который находится в классе этого мувиклипа? (получаемого по Properties > Export for Action Script, насколько я понимаю, других способов создания класса мувиклипа нет). Я конешно подозреваю, что второй путь более правильный, но почему это так обьяснить не смогу.

2. Нужно ли стремится к тому, чтобы код таймлайна мувиклипа был вообще пустым, а код всегда находился в коде класса? И если да, то что это дает, кроме "мой код выглядит профессионально, я крутой". Может ли быть так, что на практике оптимальнее всего использовать связку "код класса" + "код таймлайна".

3. Является ли код класса мувиклипа таким же глобальным как и код класса DocumentClass всего флэш-проекта?
Является ли такой код просто "удобным размещением в отдельном месте" (то есть он с таким же успехом мог бы находится и в DocumentClass.)

4. Предположим, есть два мувиклипа, и один вложен в другой.
И у каждого есть свой код класса. Являются ли такие коды одинаково публичными для всего преложения, или код вложенного мувиклипа, как бы "более локален", и обращение к нему должно быть специфическим.

Старый 08.04.2013, 11:20
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 2  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
1. Каковы отличия кода мувиклипа, находящегося внутри его таймлайна, от кода, который находится в классе этого мувиклипа? (получаемого по Properties > Export for Action Script, насколько я понимаю, других способов создания класса мувиклипа нет). Я конешно подозреваю, что второй путь более правильный, но почему это так обьяснить не смогу.
Для кода в таймлайне флеш создает свои виртуальные классы. Для кода в фреймах вы не можете реализовать все преимузества ООП: закрыть доступ для того что не нужно, наследование. Отнаследовав разнве класса от общего абстрактного родителя вы можете легко менять свойста общие для групы клипов

Цитата:
2 Может ли быть так, что на практике оптимальнее всего использовать связку "код класса" + "код таймлайна".
Как сказал выше, если вы используете код на фрейме, флеш создаст виртуальный класс, т.е. вы не сможет сделать это одновременно. Когда весь код в классах навигация по коду в 20 раз легче. В большинстве случев и tween ради которых во многом и пишется код во фреймах проще заменить програмной анимацие.
В тоже время в самом IDE удобно расставлять элементы, особенно для случая с играми. Вот здесь как раз имеет большой смысл использовать графику на сцене.

Цитата:
3. Является ли код класса мувиклипа таким же глобальным как и код класса DocumentClass всего флэш-проекта?
Является ли такой код просто "удобным размещением в отдельном месте" (то есть он с таким же успехом мог бы находится и в DocumentClass.)
Глобальных методов в AS3 практически нет, как уже отписал в другой теме. DocumentClass и класс мувиклипа равнозначны за исключением что один создал другой. Доступ отовсюду ко всему - это недостаток, а не преимущество. ПРеимущество инкапсуляции (термин обозначающий ограничение области видимости) в том что открывая код класса в не решаете исполинские задачи, а отслеживаете только ту логику которая находится в этом классе

Цитата:
4. Предположим, есть два мувиклипа, и у каждого есть код класса.
Являются ли такие коды одинаково публичными для всего преложения, или код вложенного мувиклипа, как бы "более локален", и обращение к нему должно быть специфическим.
Вам следует отказаться от восприятия классов как предтсавление в DisplayObject , хотя безусловно некоторая иерархия имеется. public доступен одинаково везде, но вот устанавливать метод в паблик без необходимости как раз не следует. А вот на счет иерархии, как раз следует организовывать доступ к мелки объектом через более крупного управителя. Можете почитать об этом подробнеепо клбчевым словам "шаблоны проектирования" или "паттерны порграммирования"


PS: Для того что бы понять преимущества кода в классах вам нужно просто попробовать поиспользовать какой-нибдуь другой редаткрор кода кроме FlashIDE: FlashDevelop, FlashBuilder, IntellageIdea ...
__________________
...

Старый 08.04.2013, 15:57
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 3  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Спасибо, Александр.

Я, разумеется, еще не могу понять ваши ответы в полной мере, но зато теперь есть некоторые общие ориентиры.

Старый 08.04.2013, 16:06
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 4  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
СЛовом при переходе с кода во фреймах на ООП чаще всего у людей появляется вопрос как получить доступ к экземплярам объектов.
И самое просто решение для начала в повесить MainClass статическое свойство ссылающееся на единственный экземпляр этого класса.

Код AS3:
package
{
	import flash.display.Sprite;
 
	public class MainClass extends Sprite
	{
		public static var instance:MainClass;
		public function MainClass ()
		{
			super();
			instance = this;
			trace (this);
		};
 
	}
}
В коде досту к нему из любого места можно получить вот так

Код AS3:
var main:MainClass = MainClass.instance;
По сути это и есть недооформленый Синглетон. В дооформленных видах он код следит за тем что бы экземпляр этого класса создавался единственный раз, вместо публичной переменной используется геттер, но не буду приводить его что бы не путать.
__________________
...

Старый 08.04.2013, 17:09
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 5  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Александр: Это типа замена _root ?
__________________
adobe AS3 manual

Старый 08.04.2013, 17:16
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 6  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
Александр: Это типа замена _root ?
ну да
Это просто для постепенного перехода пишущих код во фреймах на классы.
И этот способ как перестарховка от искущения вернуться на старую идеологию и начать писать вместе с root всякие parent.parent
И вообще отказаться от отождествления иерархии класов с иерархией вложенности DisplayObject
__________________
...

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Ну и в итоге, из любого класса, у них будет доступ к _root
И вместо того чтобы использовать событийную модель, или композицию, можно ведь обращаться напрямую, удобно)
__________________
adobe AS3 manual

Старый 08.04.2013, 17:53
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 8  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
И вместо того чтобы использовать событийную модель, или композицию, можно ведь обращаться напрямую
Ну для начала можно, как минимум, заменить root клас с MovieClip на Sprite подальше от dynamic
__________________
...

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
иерархия , класс , мувиклип , таймлайн

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:02.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.