我有坦克级,当它被召唤时它正在移动,但这个坦克并没有停止。我希望这辆坦克停在它的时候;到达某个位置(位置)..
package com.musuh
{
import flash.display.*;
import flash.events.*;
import flash.utils.getTimer;
public class Tank extends MovieClip
{
private var dx:Number; // speed and direction
private var lastTime:int; // animation time
private var side:String;
private var pos:Number;
private var speed:Number=2;
public function Tank(side:String, pos:int, altitude:Number)
{
this.side =side;
this.pos = pos;
if (side == "left") {
this.x = 20; // start to the left
dx = speed; // fly left to right
this.scaleX = 1; // reverse
} else if (side == "right") {
this.x = 1200; // start to the right
dx = -speed; // fly right to left
this.scaleX = -1; // not reverse
}
this.y = altitude; // vertical position
addEventListener(Event.ENTER_FRAME,moveTank);
lastTime = getTimer();
}
public function moveTank(event:Event) {
var timePassed:int = getTimer()-lastTime;
lastTime += timePassed;
// move Tank
this.x += dx*timePassed/1000;
this.y += 1;
if (this.x == pos)
{
this.x = pos;
}
}
}
}
当this.x到达pos =>>它不会停止! ,为什么??
答案 0 :(得分:0)
你在哪里声明'pos'?
如果输入框架超过了某个数字,你应该检查输入框架,所以你会有这个,假设pos有一个值:
public function moveTank(event:Event) {
var timePassed:int = getTimer()-lastTime;
lastTime += timePassed;
// move Tank
this.x += dx*timePassed/1000;
this.y += 1;
if (this.x > pos)
{
this.x = pos;
}
}
输入框检查每帧发生的情况。您正在为每个框架上的Tank Object添加一些值,例如,每个框架移动1个像素。如果更新的位置超过pos变量的值,则if语句检查每一帧。
祝你好运。答案 1 :(得分:0)
首先在moveTank()
中获得this.x的值后添加一个trace语句this.x += dx*timePassed/1000;
trace (this.x);
this.y += 1;`
您会注意到,在this.x值超过pos值时,它们不相等。 所以你的条件(this.x == pos)失败了。 因此,您应该始终检查
if (this.x >= pos)
{
this.x = pos;
}
希望这有帮助。