0

パズル ゲームを作成しようとしていますが、これまでピースの移動に問題はありませんでしたが、stopDrag の後にピースの位置を確認しようとすると、次のエラー メッセージが表示されました。

これは関連するコードです: full1 は、低アルファのパズルの画像とパズルのピースを含むムービークリップで、それぞれに独自のインスタンス名があります。この例では、tr はピースの 1 つのインスタンス名です。

    public function Move(even:MouseEvent)
{
    even.target.startDrag();

}
    public function stopMove(even:MouseEvent)
{
    this.stopDrag();
    checkPos(even.target.name);

}
    public function checkPos(nameStr:String)
{

    if(nameStr=="tr1")
    {
        if(this.full1.tr1.x>=460&&this.full1.tr1.x<=465.5&&this.full1.tr.y>=99&&this.full1.tr.y<=103)
        {
            this.full1.tr.x=460.2;
            this.full1.tr.y=101.95;
        }
    }



}

誰かが私が書いたものに問題を見つけたり、これにアプローチする方法についてより良い考えを持っている場合は、あなたの助けをいただければ幸いです. ありがとう。

4

2 に答える 2

0

ある場合、「even.target.startDrag();」を使用します。ドラッグを開始します。

しかし、他の関数では、「this.stopDrag();」を使用します。ドラッグを停止します。

常に「this」を使用するか、常に「even.target」を使用する必要があります。これがエラーの原因である可能性があります。

クラッシュが正確にどの行で発生したかを知ることも良いでしょう。

于 2012-07-11T14:59:50.187 に答える
0

(ドラッグを開始したため)のeven.target.stopDrag()代わりになるはずです。stopDrag() の後にエラーが発生している場合を除きます。その場合、回答するのに十分な情報ではないようです。this.stopDrag()even.target

補足として、名前チェックは checkPos() 関数の外で行う方がよいでしょう。例えば:

this.stopDrag();
if(even.target.name == "tr1")
{
    checkPos();
}

また、checkPos() から名前チェックを削除します。

于 2012-07-11T15:06:26.883 に答える