Вызов функции, определенной в мувиклипе - ActionScript 2 - PullRequest
0 голосов
/ 27 февраля 2009

У меня есть фрагмент ролика, который прикреплен с attachMovieClip, и в нем есть функция test ()

///

function test()
{
   trace('!');
}

после прикрепления фрагмента ролика я пытался вызвать эту функцию, но просто не мог. Есть ли простое решение для этого? Я читал кое-что о вас, вы не можете вызвать функцию, пока клип не будет полностью загружен ... Есть ли простое решение для этого?

Ответы [ 3 ]

1 голос
/ 01 марта 2009

Вы можете определить функцию вне мувиклипа на главной временной шкале. Затем, прикрепив его (через attachMovie), вы можете передать его через initObject (4-й параметр):

function test(p) {
    trace("called with "+p);
}
this.attachMovie("lib_clip","clip_mc",3,{func:test, mp:"my parameter"});
clip_mc._x = 100;
clip_mc._y = 100;
clip_mc.onRelease = function() {
    this.func(this.mp);
};

Vyger

1 голос
/ 27 февраля 2009

Убедитесь, что ваша функция «test» определена в первом кадре временной шкалы MovieClip. Затем используйте обработчик MovieClip.onLoad для захвата, когда MovieClip готов к приему вызовов функций. После этого вы сможете вызывать «test» в своем клипе.

Удачи!

0 голосов
/ 03 марта 2009

Прошло много времени с тех пор, как я использовал AS2, поскольку AS3 качается, но я считаю, что вам нужно дать идентификатор экземпляра для прикрепленного фрагмента ролика. И вам также нужно подождать, пока фильм не будет готов.

//MovieClip with function hello() in it.
hello():Void
{
    trace('Hello world!');
}

//Root timeline of main movie.
container.attachMovieClip("nameInLibraryToAttach", "instanceID", depth);

//The following will not trace because it happens to soon.
container.instanceID.hello();

//The following works
var runOnceNumber:Number = 0;
var interval:Number = setInterval(someFunction, 1000);

someFunction():Void
{
    container.instanceID.hello();
    runOnceNumber++;

    clearInterval(interval);
}

Вам нужно либо настроить MovieClip со встроенной функцией, чтобы транслировать событие, когда оно будет готово, и прослушивать его с основного, либо что-то вроде setInterval, которому, вероятно, нужен только один тик. Я проверил его с помощью setInterval, и он сработал в первую очередь. Опять же, вам нужно подождать, пока он не будет «ИНИЦИАЛИЗИРОВАН», то есть весь его код в кадре 1 загружен и доступен. Рассмотрим ActionScript 3, потому что с его управляемым событиями потоком подобные вещи очень просты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...