Я не знаю, лучше ли что я хочу, чтобы описать этот заголовок, но его кратчайший способ объяснить, чего я хочу достичь.как инициировать событие, когда событие закончилось
Так что я пытаюсь выяснить, как сделать _circle для перемещения из одного угла в следующий угол объекта (в котором он находится), но это движение (от _circle) должно начинаться только тогда, когда объект _box (тот, в котором находится ось), остановился, т. е. находится в центре сцены. А также в тот же самый момент, когда _box идет, нажмите кнопку _circle, чтобы остановить перемещение и остаться в позиции, в которой она находится, пока я не нажму кнопку _button.
У меня есть только логика перемещения элемента _box. (и даже эта логика слишком уродливая/не такая элегантная)
private var _myBox:Sprite = new Sprite();
private var _myCircle:Sprite = new Sprite();
private var _myButton:Sprite = new Sprite();
public function Test2()
{
addChild(_myBox);
_myBox.graphics.beginFill(0x0000FF);
_myBox.graphics.drawRect(0,0,300,100);
_myBox.graphics.endFill();
_myBox.x = stage.stageWidth * 0.5 - _myBox.width * 0.5 ;
_myBox.y = 0 - _myBox.height;
_myBox.addChild(_myCircle);
_myCircle.graphics.beginFill(0x000000);
_myCircle.graphics.drawCircle(0,0,20);
_myCircle.graphics.endFill();
_myCircle.x = 0 + _myCircle.width * 0.5;
_myCircle.y = _myCircle.height * 0.5 + _myCircle.height * 0.5;
addChild(_myButton);
_myButton.graphics.beginFill(0xAFAFAF);
_myButton.graphics.drawRect(0,0,100,100);
_myButton.graphics.endFill();
_myButton.x = 400
_myButton.y = 300
_myButton.addEventListener(MouseEvent.CLICK, onClick);
var moveBoxDown:Timer = new Timer(1000, 1);
moveBoxDown.addEventListener(TimerEvent.TIMER, goingDown);
moveBoxDown.start();
}
function goingDown(ev:TimerEvent):void
{
TweenLite.to(_myBox, 0.5 , {y: stage.stageHeight/2-_myBox.height/2 });
}
private function onClick(ev:MouseEvent):void
{
var moveBoxUp:Timer = new Timer(1000, 1);
moveBoxUp.addEventListener(TimerEvent.TIMER, goingUp);
moveBoxUp.start();
}
function goingUp(ev:TimerEvent):void
{
TweenLite.to(_myBox, 0.5 , {y: 0 - _myBox.height });
}
Значит, любая помощь в моей проблеме? или сделать код более привлекательным. Должно быть очень просто.
Я, кажется, помню, что TweenLite имеет OnComplete обработчик. Вы можете использовать это, чтобы начать круг, как только квадрат достигнет его первой позиции, а затем снова для круга. Таким образом, вы также можете избавиться от таймеров. – InkeyString
Я только что посмотрел. delayedCall - это нечто другое. onComplete - это параметр, который передается анимации, так же, как вы передали параметры x и y, т. е. TweenLite.to (mc, 1, {x: 100, onComplete: myFunction}); и если вам нужно передать параметры функции, вы можете: TweenLite.to (mc, 1, {x: 100, onComplete: myFunction, onCompleteParams: ["param1", 2]}); Это выполнит myFunction после завершения анимации :) – InkeyString
Посмотрите здесь в специальных свойствах http://www.greensock.com/as/docs/tween/_tweenmax.html – InkeyString