嘿大家所以我想知道如何实现这一目标?我现在花了一些时间在这上面,似乎无法弄明白。我知道它缺少一些变量,但不知道从哪里开始。这是我目前在mcSpear类中所拥有的。
private function init():void
{
addEventListener(Event.ENTER_FRAME, SpearLoop);
}
private function SpearLoop(e:Event):void
{
this.rotation += 5;
if (this.rotation >= 180)
{
trace("greater than 180");
this.rotation -= 5;
}
}
这会顺时针旋转物体,然后当它到达if语句时它只是开始抽搐并且永远不会改变方向。任何帮助将不胜感激!
答案 0 :(得分:1)
当旋转180°时,您的代码会阻挡物体在相同位置。为什么?
因为每次object.rotation >= 180
,你都会object.rotation -= 5
所以它现在是175°,下一次你将object.rotation += 5
设置回180°,所以你创建了一个无限循环。为避免这种情况,您可以使用Boolean
var,例如,它可以指示旋转的感觉,如下所示:
var clockwise:Boolean = true;
addEventListener(Event.ENTER_FRAME, SpearLoop);
function SpearLoop(e:Event):void
{
if(this.rotation >= 180){
clockwise = false; // activate the counterclockwise sens
} else if(this.rotation <= 0){
clockwise = true; // activate the clockwise sens
}
if (clockwise){
this.rotation += 5;
} else {
this.rotation -= 5;
}
}
希望可以提供帮助。