CreateJS Flash CC MovieClip (root) есть ли способ сделать это с помощью JavaScript и Flash CC

Недавно я создавал проект во Flash CC, используя библиотеку CreateJS для HTML Canvas.

В ActionScript 3 вы могли использовать MovieClip(root) для вызова функций и доступа к переменным из экземпляра временной шкалы символа на основную временную шкалу. Кто-нибудь знает, есть ли аналогичный способ сделать это с помощью CreateJS и Flash CC для холста?


person user3667356    schedule 06.04.2015    source источник


Ответы (2)


Экземпляры в списке отображения EaselJS могут получить доступ к своей рабочей области через getStage(). Однако в выходных данных Flash авторский «root» на самом деле является дочерним элементом EaselJS Stage. Вы можете увидеть это в сгенерированном HTML, где он создает экземпляр «exportRoot» и добавляет его на сцену. Итак, если вы ничего не добавили на сцену, ваш «корень» будет ее первым дочерним элементом.

Например, предположим, что вы определили подобную функцию на своей корневой временной шкале:

this.doSomething = function() { /* etc */ }

Вы можете вызвать его из временной шкалы символа следующим образом:

this.getStage().getChildAt(0).doSomething();

Если вы хотите играть очень быстро и грязно, вы также можете напрямую получить доступ к глобальной переменной exportRoot, определенной в HTML, поместив что-то вроде этого на временную шкалу вашего символа:

exportRoot.doSomething();

Однако стоит отметить, что, как и в ActionScript, ссылка до корня обычно указывает на то, что ваша архитектура нуждается в некотором переосмыслении.

person gskinner    schedule 08.04.2015
comment
Вау, Грант Скиннер, спасибо, что нашли время ответить. Я решил проблему, которая у меня возникла, реструктурировав свой дизайн, но потребовалось немного больше времени, чтобы протестировать то, что я пытался сделать. - person user3667356; 10.04.2015
comment
Ваши примеры работают, если код, вызывающий функцию на основной временной шкале, находится в первом кадре временной шкалы символа, но он не работает, если я помещаю его в другой кадр, что я и пытался сделать. Просто было интересно, возможно ли это, используя createJS с Flash? - person user3667356; 10.04.2015
comment
Я только что проверил, используя код выше. Объявление метода в кадре 1 корневой временной шкалы и this.getStage().getChildAt(0).doSomething(); в кадре 5 (из 10) экземпляра дочернего символа. Это работало нормально. Может быть, вы делаете что-то странное? - person gskinner; 12.04.2015
comment
Я выключил флэш-память и только что проверил ее снова, и теперь она работает правильно в файле. Я думаю, что работа со вспышкой в ​​спящем режиме и вне его могла быть проблемой. Большое вам спасибо за вашу помощь. У меня тоже много других вопросов. - person user3667356; 13.04.2015

Взгляните на экспортированный файл html. Он будет включать переменную «стадия». Если ваш символ имеет имя экземпляра mysymbol, вы можете получить к нему доступ через stage.mysymbolили stage["mysymbol"].

person Ferry Kranenburg    schedule 07.04.2015
comment
stage такой же, как root в этом случае - person Ferry Kranenburg; 07.04.2015
comment
Спасибо за ответ. Я вижу, о чем вы говорите в html-файле. Таким образом, чтобы вызвать функцию на основной временной шкале внутри кадра на временной шкале другого символа, я бы вызвал stage.functionName(); вызвать конкретную функцию? Я только что попробовал это, и это не сработало. Получил неопределенную ошибку. - person user3667356; 07.04.2015