我正在进行角色漫步。这段代码会让他向右摇摆,当它完成时会触发他向左摇摆,然后再次调用该函数继续循环。
我可以通过调用函数让循环工作正常但是如何停止函数? 我也想稍后再打电话。有没有办法启动和停止功能?
function wobble()
{
var ws = .1;
var dis = 1;
var WobbleRight:Tween = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true);
WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL);
function WobbleL(e:TweenEvent):void
{
var WobbleLeft:Tween = new Tween(Beau, "rotation", Strong.easeIn,Beau.rotation, -dis, ws, true);
WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR);
function WobbleR(e:TweenEvent):void
{
wobble();
}
}
}
wobble();
或者有更好的方法吗?我想启动Tweens并通过调用函数来阻止它们。开着走,然后关掉。 - 非常感谢!
答案 0 :(得分:1)
试试这段代码。请注意如何重用Tween,并在begin
运动重新启动时将Tween
位置重置为Beau.rotation。另外,不要将您的函数嵌入到另一个函数中。
(我强调了这个动作并放慢速度进行测试):
import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;
var ws = 1;
var dis = 10;
var WobbleRight:Tween;
var WobbleLeft:Tween;
this.addEventListener(MouseEvent.CLICK, toggleWobble);
function startWobble():void
{
WobbleR(null);
}
function WobbleL(e:TweenEvent):void
{
if (!WobbleLeft)
{
WobbleLeft = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, -dis, ws, true);
WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR);
} else {
WobbleRight.begin = Beau.rotation;
WobbleLeft.start();
}
}
function WobbleR(e:TweenEvent):void
{
if (!WobbleRight)
{
WobbleRight = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true);
WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL);
} else {
WobbleRight.begin = Beau.rotation;
WobbleRight.start();
}
}
function toggleWobble(e:MouseEvent):void
{
if( WobbleRight && WobbleRight.isPlaying ) {
WobbleRight.stop();
} else if ( WobbleLeft && WobbleLeft.isPlaying ) {
WobbleLeft.stop();
} else {
startWobble();
}
}
startWobble();
答案 1 :(得分:0)
你想以什么方式停止摇摆?多次摇晃停止,或者用户应该点击按钮?
如果你想在几次后停止摆动,那么你应该使用一个计时器。在计时器事件上调用wobble()。如果用户停止摆动,则只需使用触发器isStopped。如果isStopped设置为true,则从wobble()返回。