AS3, как внедрить framescript и получить ссылку на mc, в который был вставлен скрипт - PullRequest
0 голосов
/ 11 мая 2011

Мне было интересно, можно ли вставить рамочный скрипт в MovieClip и получить ссылку на mc, в который был вставлен скрипт, из функции, используемой в качестве рамочного скрипта.

Простой рабочий примерэто:

Существует мувиклип с именем mc.У него где-то есть метка фрейма 'end', и мы хотим добавить в этот кадр функцию stop () без добавления кода в сам MovieClip (имейте в виду, что это только пример).Итак, вот код (мы могли бы разместить его на основной временной шкале тестового фильма, на котором mc находится на сцене):

var end:int=0;
for (var i:int=0;i<mc.currentLabels.length;i++)
{
    if (mc.currentLabels[i].name=='end') 
        end=mc.currentLabels[i].frame;
}
function doStop():void{
    mc.stop();
}
// Frame script for label 'end'
mc.addFrameScript(end-1,doStop); // Frames are 0-based here

Когда точка воспроизведения достигает кадра, помеченного как «конец» в mc,Функция doStop () будет выполнена.Однако эта функция сохраняет свою первоначальную область видимости.Поэтому, чтобы остановить mc, нам нужно указать mc.stop ().this указывает на объект, в котором находится функция doStop, поэтому this.stop () не будет работать.Если бы мы хотели использовать одну и ту же функцию для нескольких mcs, нам нужно было бы как-то получить ссылку на текущий целевой mc.Вот что я искал.

1 Ответ

1 голос
/ 11 мая 2011

Просто сохраните ссылку на mc clip:

function doStop(target : MovieClip):Function{
    return function():void
    {
        target.stop();
    }
}
// Frame script for label 'end'
mc.addFrameScript(end-1,doStop(mc)); // Frames are 0-based here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...