2015-03-04 2 views
2

У меня очень странная проблема с простым тестом, который я пытаюсь сделать в AS3.AS3: действия внутри динамически добавленного видеоклипа не работают

У меня есть две функции на моем первом кадре:

function function1():void { 
    trace ('function1 executed'); 

    mc.gotoAndStop (2); 

    function2(); 
} 

function function2():void { 
    trace ('function2 executed'); 

    var test_mc:test_lib = new test_lib(); 
    addChild (test_mc); 
} 

Как вы можете видеть, function1 изменяет рамку на «МК», а также называет function2, который добавляет клип ребенок фильм из библиотеки на стадии ,

Function1 вызывается внутри другого простого мувика, на 60-й кадр, например, так:

Object(parent).function1(); 

Этот ребенок клип, который добавляется, это просто черный квадрат с действием следа на его первый кадр ,

Действие трассировки должно работать, как только ребенок добавляется, но это не так. Однако, если я удаляю или комментирую строку mc.gotoAndStop(2), действие трассировки работает нормально. Он также работает, если я положил mc.gotoAndStop(2) ПОСЛЕ того, как я вызываю функцию2.

Я не понимаю, почему это происходит.

Это произошло в более крупном проекте, в котором я работал, поэтому я решил изолировать проблему в новом файле и создать пример выше. Это очень странно.

+1

Я не знаю, почему это не работает, но я знаю, как это исправить. Вызов 'function2' с задержкой (например, 1 мс). 'setTimeout (function2, 1);' Он работает! – subdan

+0

Странно, да? Как я уже сказал, он работает, если я просто позвоню mc.gotoAndStop (2) ПОСЛЕ функции2(); Я просто хотел знать, почему это происходит. Кажется, это ошибка. – DanielFox

ответ

1

попытка смещения вашего function2 внутри кадра тс 2.

Основной график:

function function1():void { 
    trace ('function1 executed'); 

    mc.gotoAndStop (2); 
} 

в тс -> на раме 2

trace ('function2 executed'); 
var test_mc:test_lib = new test_lib(); 
addChild (test_mc); 

Вам придется немного изменить код внутри mc с использованием .root

+0

Это возможное решение. Но я уже могу заставить его работать, вызвав функцию2() перед mc.gotoAndStop (2), как я уже сказал. Я просто хотел знать, почему это происходит ... – DanielFox

0

Что такое mc? Если тс является MovieClip, который содержит оба ваших функций, то ваш код, очевидно, не может работать, потому что после того, как вы gotoAndStop (2), вы можете больше не называть function2() потому что function2() не существуют на втором кадре.

+0

mc - это не видеоклип с функциями. Это просто мувиклип на сцене. – DanielFox

Смежные вопросы