Ошибка активации обратно после включения =false

В качестве домашней работы я должен написать простую галерею; мы также работали с эффектами GreenSock. Вот мой код до сих пор:

import com.greensock.easing.*;
import com.greensock.TweenLite;

for (var i:Number = 0 ; i<5 ; i++){
    _root["a"+i].onRollOver=function(){
        TweenLite.to(this,.5,{_xscale:130,_yscale:130,
                     _alpha:90,
                     ease:Elastic.easeOut});
    }
    _root["a"+i].onRollOut=function(){
        TweenLite.to(this,.5,{_xscale:100,_yscale:100,
                     _alpha:50,
                     ease:Elastic.easeOut});
    }
    _root["a"+i].onPress=function(){
        var ix=this._name.substr(1);
        TweenLite.to(_root["z"+ix],1,{_y:199.95,
                     ease:Quart.easeOut});
        for(i=0 ; i<5 ; i++){
            _root["a"+i].enabled=false;
    }
    }
    _root["z"+i].cer.onPress=function(){
        var ix=this._parent.name.substr(1);
        TweenLite.to(_root["z"+ix],1,{_y:-190.15,
                     ease:Quart.easeIn});
        for(i=0 ; i<5 ; i++){
            _root["a"+i].enabled=true;
            _root["a"+i]._xscale=100;
            _root["a"+i]._yscale=100;
            _root["a"+i]._alpha=50;
    }
}
}

Я знаю, что есть много способов сделать галерею, но это в значительной степени структура, с которой мы работали в классе, поэтому я не могу сильно измениться. Дело в том, что все работает отлично, но как только я дохожу до точки, где отображается Content (z), и вы нажимаете на мувиклип внутри него, который закрывает его ("cer"), хотя он возвращает, скажем, Select- Кнопка изображения (а) в исходное состояние (слегка всплывающее при выборе), кажется, просто игнорировать TweenLite.

    _root["z"+i].cer.onPress=function(){
        var ix=this._parent.name.substr(1);
        TweenLite.to(_root["z"+ix],1,{_y:-190.15,
         ease:Quart.easeIn});

дисплей

Как я понимаю, здесь мы в основном говорим: из символа с именем "z" + текущего номера переменной "i", символ "cer", который он содержит внутри, при нажатии будет иметь следующую функцию - снова мы определяем переменную "ix", сын предыдущего; результат вычитания одного символа из имени выбранного символа (таким образом, мы получаем простое число символа, поскольку их может быть множество, и мы используем для упрощения for) - функция, использующая TweenLite библиотека эффектов, вернулась бы к своей позиции за пределами дисплея символом "z" + число, которое мы получили из только что определенной переменной "ix"

Теперь я не могу найти причину, по которой эта инструкция была бы проигнорирована, когда простая трассировка, кажется, работает очень хорошо с onPress; так что это наводит меня на мысль, что это как-то связано с TweenLite. Также я верю, что это может иметь какое-то отношение к enable = false / true, но я пытался поместить его в разные моменты в функцию, и, похоже, ничего особенного не произошло. Я не думаю, что это как-то связано с вызовом символа - извините, я просто узнаю обо всем этом, так что я могу описать это так, потому что почти тот же самый код используется непосредственно перед тем, когда Контент (z) отображается на дисплее, и он работает просто отлично.

Это структурная проблема? Я нашел это на сайте справки Adobe:

"ПРИМЕЧАНИЕ. Если фрагмент ролика, содержащий _root, загружен в другой фрагмент ролика, _root ссылается на временную шкалу загружаемого фрагмента ролика, а не на временную шкалу, содержащую _root. Если необходимо убедиться, что _root ссылается на временную шкалу загруженного фрагмента ролика даже если он загружен в другой фрагмент ролика, используйте MovieClip._lockroot."

Так как моя кнопка закрытия MovieClip находится внутри содержимого MovieClip, нужно ли мне использовать lockroot? Если так, то как?

Я бы очень признателен за несколько советов.. Спасибо за ваше время!

1 ответ

Вы должны стараться избегать использования абсолютных путей. Вместо этого используйте относительный. Просто используйте this вместо _root

Другие вопросы по тегам