Я немного возился с этой проблемой. У меня есть симпатичная небольшая подсказка для мувиклипа, которая следует за мышью пользователя в течение нескольких секунд, прежде чем она сама себя удалит. Моя проблема в том, что, если он уже есть, я удаляю его, но я не могу удалить событие MOTION_FINISH, и оно все равно срабатывает и, возможно, удаляет новую подсказку.
То, что я хочу, это, по сути, поместить в позицию, например, var tween (smallhelp_panel) .deleteAll ();
Я видел твинлайт-функцию killtweensof (mc); Однако я использовал твины, которые я включил ниже, в свои 30 тыс. Строк кода AS3.
Вот мой обработчик всплывающей подсказки. Я называю это простым
Main_Warning("Please don't forget to save!",5);
Мой мувиклип - smallhelp_panel, и я проверяю, существует ли он уже, и удаляю его. Однако альфа-анимация и анимация MOTION_FINISH все еще существуют и вызывают проблемы с любыми новыми smallhelp_panels.
public function Main_Warning( the_text:String, myTimer:int = 4){
if(smallhelp_panel != null){
stage.removeChild( smallhelp_panel );
removeEventListener(Event.ENTER_FRAME, trackmouse);
smallhelp_panel = null;
}
smallhelp_panel = new small_help();
smallhelp_panel.name = "myWarning";
smallhelp_panel.x = mouseX - 50;
smallhelp_panel.y = mouseY + 15;
smallhelp_panel.helptext.text = the_text;
stage.addChild( smallhelp_panel );
addEventListener(Event.ENTER_FRAME, trackmouse);
var myTween:Tween;
myTween = new Tween(smallhelp_panel, "alpha", None.easeOut, 1, 0, myTimer, true);
tweenholder = myTween;
tweenArray.push(tweenholder);
myTween.addEventListener(TweenEvent.MOTION_FINISH, removeTween);
}
Это мой обработчик подсказок.
в справочных целях мой съемник твина:
public function removeTween(e:TweenEvent = null):void{
e.target.removeEventListener(TweenEvent.MOTION_FINISH, removeTween);
if(smallhelp_panel != null){
removeEventListener(Event.ENTER_FRAME, trackmouse);
stage.removeChild( smallhelp_panel );
smallhelp_panel = null;
}
}
и мой трекер мыши, который перемещает всплывающую подсказку с помощью мыши, прост:
public function trackmouse(e:Event):void{
smallhelp_panel.x = mouseX - 50;
smallhelp_panel.y = mouseY + 15;
}