PDA

Просмотр полной версии : Что же такое клипы с точки зрения программирования


JackLondon
22.08.2010, 03:25
Вобщем как-то до этого и не задумывался над этим, а сейчас столкнулся лоб в лоб..
Ситуация следующая: в одном фрейме лежит МувиКлип, в нем лежат ПростыеКнопки, жмем на одну - переход на другой фрейм, когда возвращаемся из того фрейма обратно на фрейм с мувиком - у него уже нет ни одной кнопки, только его графика =/
При этом даже не пользуем ручное удаление чайлдов/листенеров/таймера, которое я сначала написал по незнанию :)
Так что собственно вопрос, что происходит, когда я ухожу с фрейма?
Нужно ли удалять объекты вручную?
Пробовал, например, юзать мой мувиклип из другого фрейма, на который перехожу, в ответ - у него нулл референс. Но при этом, когда я возвращаюсь - он не создается по-новому, потому что тогда бы он имел тот же вид, какой у него был при первом посещении фрейма..
Вобщем знающие люди, просветите плизз :) Ну или опять же литературку посоветуйте..

Ах да, еще забыл, в том фрейме, в который я перехожу, работает таймер, который включен в недоступном объекте мувика.. Ну че за бреееед?))

Добавлено через 47 минут
И вообще, хорошо ли это - добавлять элементы вручную, или лучше все делать и вовсе не пользую фреймы, онли код? %)

Psycho Tiger
22.08.2010, 12:50
Ах да, еще забыл, в том фрейме, в который я перехожу, работает таймер, который включен в недоступном объекте мувика.. Ну че за бреееед?))Ну, Вам виднее, что Вы там сделали.


Мувиклипы - ДисплейОбджекты которые содержат временную шкалу. Временная шкала нужна для проигрывания анимации и только. Набор кнопок в кадрах - это мало похоже на анимацию. Поэтому в этом случае кодом.

Wolsh
22.08.2010, 13:16
Помедитируйте пять минут над дзенским вопросом - в чем разница между фильмом Бэтмен-2 и программой Microsoft Word. Эти пять минут избавят вас от двух лет непонимания что такое код и что такое кадры. Представьте что вы решили сделать программу Microsoft Word - кадрами на таймлайне. Каждое состояние окна - это кадр. Вот выпадающее меню, все варианты (!), и вот... текст, создаваемый пользователем.. ВСЕ варианты. И, возможно, вы поймете что ДА. Программы пишутся кодом и управляются Событиями, и НЕТ никаких кадров. А фильмы делаются кадрами, и в них нет никакого кода и они не ждут никакой реакции Пользователя или Системы. Это старая дилемма Флэш - такой вот он многозадачный. Но в голове то надо отделять мультики от приложений. У вас есть Стол, или Viewport - называйте как хотите, в общем окно. И кодом вы кладете на этот стол или убираете с него нужные элементы, хоть те же МувиКлипы. Забудьте про то, что программа может быть мультиком, где каждый кадр - состояние окна. Освободитесь от этого. Все гораздо проще.

JackLondon
22.08.2010, 15:44
Код, код и еще раз код, ясно.. Спасибо :)

O.K.
22.08.2010, 17:36
Ёмкое сравнение)
Флеш, особенно еще as2, был очень удобен для нифига не программистов - я помню мог писать на нём игры, практически не зная что такое программирование - да и выходило вроде бы не дурно)
Долго же я не мог отойти от набивания кода во фреймах.
Главное решить - если хочешь писать код в будущем, прекращай писать в кадрах, купи книжку по as3 и в путь: ставить задачи и искать в ней решения.
Если просто хобби, так друзьям показать как круто я могу быстро накатать какую-нибудь фигню - то это строго as2, всё быстро, и интуитивно понятно.
Для профилактики качни флекс, там нет кадров)

Psycho Tiger
22.08.2010, 19:25
O.K., на AS2 очень сложно писать, не понимая что такое программирование)

JackLondon
22.08.2010, 20:56
> Нужно ли удалять объекты вручную?
этот вопрос все проигнорили :) Нужно ли прописывать перед удалением объекта конструкцию вида:

while (numChildren) {
removeChildAt(0);
}

или сборщик мусора сам все сделает при сбросе ссылки на объект в нулл?

Psycho Tiger
22.08.2010, 21:17
Можно и самому проверить, между прочим.

Да, сбросит. Но я делаю.

O.K.
23.08.2010, 13:59
O.K., на AS2 очень сложно писать, не понимая что такое программирование)
Ну as1/2. Мне хватало gotoAndPlay if for и еще немного чтоб делать игры) ну и разумеется куча чужих исходников, я даж не знал что такое функция - я переменные все в руте хранил, юзал gotoAndPlay а код выполнялся в таймлайне)

Psycho Tiger
23.08.2010, 17:24
Не AS1/2, а AS1.
AS2 подразумевает что код пишется в классах, поэтому и переменные в _root`е не хранятся.