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

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

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
По умолчанию Как лучше всего удалить MovieClip со сцены?

trace("hello world!")

Ситуация:
- есть куча классов с отрисованной анимацией
- каждый класс наследуется от MovieClip
- мувик нужно добавить на сцену, проиграть 1 раз и затем удалить

Как сделано сейчас:
- через Delegate создается анонимная функция, которая посредством addFrameScript вешается на последний кадр мувика

Вопрос:
Можно ли это сделать лучше и, если да, то как?

Заранее trace("thank you, folks")
__________________
...вселенская грусть

Старый 28.10.2010, 23:17
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Ого, какой вопрос от вас (:
А почему именно через Delegate, а не сразу addFrameScript с анонимной функцией?
__________________
тут я

Старый 28.10.2010, 23:18
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 3  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Лучше бросать в конце анимации событие сигнализирующее об окончании анимации. Это позволит одинаково работать с анимациями имеющими разные уровни вложенности (из глубины анимации можно бросить всплывающее событие)

Добавлено через 1 минуту
К тому же при этом не надо будет использовать недокументированные возможности флеша.

Старый 29.10.2010, 00:26
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
А почему именно через Delegate, а не сразу addFrameScript с анонимной функцией
Ну, мне показалось так удобнее. Есть в родителе функция, которая получает в параметр ребенка и удаляет его (то есть как раз анимацию). Через Delegate просто удобно создать анонимную функцию, которая вызывает функцию родителя с нужным параметром (надеюсь не все сломали глаза это читать =) )

Цитата:
Лучше бросать в конце анимации событие сигнализирующее об окончании анимации
Чем это лучше? тут 2 варианта:
1) лезть в каждую анимацию и писать ей скрипт в кадре (это epic fail)
2) эмм... а как еще? Я так понимаю, что только через addFrameScript. Только я не понимаю, что такое нужно в этот addFrameScript написать, чтобы заставить мувик отправить нужное событие и чтобы это не было анонимной функцией
__________________
...вселенская грусть

Старый 29.10.2010, 01:01
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 5  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Цитата:
1) лезть в каждую анимацию и писать ей скрипт в кадре (это epic fail)
Да, лезть придётся. Но для писания скрипта у меня, например, написан довольно простой jsfl скрипт, который делает это автоматически, так что никакого epic fail

Цитата:
Только я не понимаю, что такое нужно в этот addFrameScript написать, чтобы заставить мувик отправить нужное событие и чтобы это не было анонимной функцией
Это может быть бросание события


Последний раз редактировалось f.g.programmer; 29.10.2010 в 01:04.
Старый 29.10.2010, 01:39
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 6  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Бросание кем? В данном случае вариант с Delegate и прямым вызовом мне кажется более приемлемым. Насчет jsfl - круто это все до тех пор, пока Вам всегда нужно использовать графику в одном контексте. ИМО - fail =)
__________________
...вселенская грусть

Старый 29.10.2010, 01:54
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 7  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Цитата:
Бросание кем?
Да действительно, чтобы бросить событие придётся использовать делегирование или локальную функцию.

Цитата:
до тех пор, пока Вам всегда нужно использовать графику в одном контексте
Пусть есть у нас другой контекст, нужно бросить 3 события, в трёх точках анимации. Мы залезаем в анимацию, смотрим в каких кадрах нужно бросить событие, и добавляем в коде через addFrameScript.
Через некоторое время изменяем анимацию на несколько кадров, ищем в коде где к ней привязаны addFrameScript, и правим их. Так?

Добавлено через 3 минуты
Да, ещё нужно делать все анимации одноуровневыми или прописывать и помнить идентификаторы вложенных клипов (снова же лезть в каждую анимацию). Либо, для случая с удалением, находить самую длинную анимацию из вложенных, и считать её длину продолжительностью проигрывания.


Последний раз редактировалось f.g.programmer; 29.10.2010 в 08:50.
Старый 29.10.2010, 02:31
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
gloomyBrain, открыл я доку от адоба и обнаружил, что единственное место в хэлпе по ас3, где упоминается делегирование тут, да и то больше в контексте, мол для программеров, которые не могут отвыкнуть от ас2 и, мол, так делать не хорошо.
Исходя из этого рекомендовал бы всю анимацию наследовать от некоего класса, в котором через addFrameScript на последний кадр вешалась бы функция, которая диспатчила команду наверх об удалении.
Что касается значительной вложенности - это ИМХО частный случай, требующий другого, индивидуального, подхода.

ЗЫ. если есть другие варианты - тоже было бы интересно...
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 29.10.2010, 09:11
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 9  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Цитата:
Что касается значительной вложенности - это ИМХО частный случай
Для меня (сам я почти не рисую) это обычный случай. Достаточно двух уровней вложенности (анимация состоит из нескольких простых анимированных клипов), чтобы addFrameScript стал неудобен или вовсе неприменим.

Старый 29.10.2010, 11:21
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 10  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вот кстати с утра подумалось об общем классе и деспатче события яЗакончилПроигрываться. Это универсальный способ, ибо можно поставить счетчик, по истечению которого можно удалить всех, кто поместился в вектор-пул. Это как пример полезности)
__________________
тут я

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

Теги
delegate , removeChild
Опции темы
Опции просмотра

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

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


 


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


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