0

タンクのクラスがあり、呼び出されると動いていますが、このタンクはまったく止まりません。このタンクが特定の位置 (pos) に達したときに停止するようにしたい..

 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 に達したとき =>> 止まりません!! 、 どうして ??

4

2 に答える 2

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;
}

お役に立てれば。

于 2013-10-30T12:50:18.703 に答える