Ошибка активации обратно после включения =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