大家好 所以我想知道如何做到这一点?我现在花了一些时间在这上面,似乎想不通。我知道它缺少一些变量,但不知道从哪里开始。这就是我迄今为止在我的 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 语句时,它只是开始抽搐并且永远不会改变方向。任何帮助将不胜感激!
当对象旋转 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;
}
}
希望能有所帮助。