Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Добавленный MovieClip не стартует.. (http://www.flasher.ru/forum/showthread.php?t=157237)

dimarik 07.06.2011 22:05

Протрейсите m и mBlock. Возможно, нет одного из них.

SiDDD 12.06.2011 20:14

Упростил код до двух строчек:

Код AS3:

// код фрейма
 
someMovieClipFromScene.gotoAndStop(someFrame);
 
var mс:MovieClip=new BlaBlaFromLibrary();



someMovieClipFromScene.gotoAndStop(someFrame) тутже вызывает Event.FRAME_CONSTRUCTED..

..далее выполняется код из фреймов У ВСЕХ клипов на сцене по порядку (хотя код из нашего фрейма еще не завершен!)

Если gotoAndStop/gotoAndPlay несколько - будет столько же событий FRAME_CONSTRUCTED (но ВСЕ клипы уже обрабатываться не станут а выполняется только код из фрейма - куда отсылает goto)

И тут у Flash едет крыша и любой новый клип "родится мертвым":
б) если фрейм один - код фрейма не выполняется
а) если фреймов несколько - в следующем кадре новый клип начнет проигрываться СРАЗУ СО ВТОРОГО фрейма



Можно добавить принудительный вызов первого фрейма...

Код AS3:

// код фрейма
 
someMovieClipFromScene.gotoAndStop(someFrame);
 
var mс:MovieClip=new BlaBlaFromLibrary();
mc.gotoAndPlay(1);


...или переставить строчки местами и всё будет работать как надо:

Код AS3:

// код фрейма
 
var mс:MovieClip=new BlaBlaFromLibrary();
 
someMovieClipFromScene.gotoAndStop(someFrame);


Вот такие вот грабли. Отсюда мораль - если пишете код в фрейме - СПЕРВА нужно создать все новые клипы а потом уже выполнять gotoAndStop/gotoAndPlay!

fish_r 12.06.2011 20:58

Ну, да. Или по другому: Если пишете код в фрейме, то .... не пишите код в фрейме. :)

SiDDD 13.06.2011 19:07

Для меня так и остаётся загадкой - КАК можно собрать проект БЕЗ кода в фреймах?? Скажите хотя бы - ГДЕ этому научиться??

Десятки объектов, сотни эффектов и куча событий... и всё это описать классами? Далее снизойти до описания всей векторной графики в одном бинарном массиве? Прикрутить к этому пол таймера - и всё зашуршит.. ЗАЧЕМ тогда этот falsh? Может писать всё в теле троянского вируса? Чтобы было интереснее так сказать...

..а если по делу - это же БАГ! Причем, как и прочие, найденные в процессе разработки.. Например вот.. Тема оставшаяся без ответа. Затрагивающая туже проблему. Когда, в принципе, логичные действия приводят к странному результату..

..а на всё это уходят часы и сутки...а может в следующей версии этот баг исправят и всё это зря? =) А форум adobe тоже молчит... им нет дела до простых смертных... или.. они слишком заняты %)

fish_r 13.06.2011 20:23

Цитата:

Сообщение от SiDDD (Сообщение 1003450)
Для меня так и остаётся загадкой - КАК можно собрать проект БЕЗ кода в фреймах??

Для меня, также, загадка - как можно, сколько-нибудь серьезное приложение написать с кодом во фреймах?
Серьёзно. Я не прикалываюсь.

Цитата:

Сообщение от SiDDD (Сообщение 1003450)
Скажите хотя бы - ГДЕ этому научиться??

Не думаю, что этому надо особо учиться. Управляйте приложением из документ-класса. Если хотите задать какое то особое, определённое поведение для отдельного символа залинкуйте его для ActionScript, но не на автогенерирующийся класс, а на реальный. Просто положите скрипт с таким именем рядом с фла. Это, так -
для начала. Дальше - больше. Потом удивитесь - как вообще можно было, что то делать во фреймах?

Цитата:

Сообщение от SiDDD (Сообщение 1003450)

Десятки объектов, сотни эффектов и куча событий... и всё это описать классами? Далее снизойти до описания всей векторной графики в одном бинарном массиве? Прикрутить к этому пол таймера - и всё зашуршит.. ЗАЧЕМ тогда этот falsh? Может писать всё в теле троянского вируса? Чтобы было интереснее так сказать...

Ну тут вы просто прикалываетесь :). Хотя по поводу десятков объектов... у меня несколькими сотнями объектов (около 600-от) управляет один - единственный класс (в 70 строк с комментами), и ничего... справляется :).

Цитата:

Сообщение от SiDDD (Сообщение 1003450)
..а если по делу - это же БАГ! Причем, как и прочие, найденные в процессе разработки.. Например вот.. Тема оставшаяся без ответа. Затрагивающая туже проблему. Когда, в принципе, логичные действия приводят к странному результату..

..а на всё это уходят часы и сутки...а может в следующей версии этот баг исправят и всё это зря? =) А форум adobe тоже молчит... им нет дела до простых смертных... или.. они слишком заняты %)

Это действительно баг. И я о нём не знал... А написал полуприкалываясь, "полу" потому, что это действительно плохая практика - писать во фреймах.

SiDDD 14.06.2011 17:18

Цитата:

Сообщение от fish_r (Сообщение 1003482)
Для меня, также, загадка - как можно, сколько-нибудь серьезное приложение написать с кодом во фреймах? Серьёзно. Я не прикалываюсь.

Как закончу - обязательно покажу :) Хотя, серьезность проекта можно поставить и под сомнение.

Например есть клип с анимацией персонажа. И в 35 фрейме нужен переход на третий. Но, при определенном условии, переход пропускаем и идём с 36-го фрейма и до последнего. Где всё благополучно останавливаем командой stop(); Вопрос - как собрать код из всех этих фреймов в один класс?

Цитата:

Если хотите задать какое то особое, определённое поведение для отдельного символа залинкуйте его для ActionScript, но не на автогенерирующийся класс, а на реальный. Просто положите скрипт с таким именем рядом с фла.
А вот за такую идею спасибо! Где-нить обязательно применю.

КорДум 14.06.2011 18:00

Цитата:

Вопрос - как собрать код из всех этих фреймов в один класс?
Очевидно, что за этим должен следить какой-то персональный контроллер анимации.

SiDDD 14.06.2011 18:13

Цитата:

Сообщение от КорДум (Сообщение 1003713)
Очевидно, что за этим должен следить какой-то персональный контроллер анимации.

..и так, шаг за шагом, таки дойти до одного красивого бинарного файла :)

КорДум 14.06.2011 18:16

Утрируете.

derhab 14.06.2011 18:35

Цитата:

Сообщение от SiDDD (Сообщение 1003697)
Например есть клип с анимацией персонажа. И в 35 фрейме нужен переход на третий. Но, при определенном условии, переход пропускаем и идём с 36-го фрейма и до последнего. Где всё благополучно останавливаем командой stop(); Вопрос - как собрать код из всех этих фреймов в один класс?

прилинкуйте этот клип в библиотеке к классу, в котором опишите необходимую логику, есть же в конце концов свойства currentFrame, totalFrames, событие ENTER_FRAME и т.д., можно полностью управлять поведением анимации


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

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