5

私はFlashCS6でiOSゲームを開発しています。Event.MOUSE_DOWNハンドラーに入れる基本的な動きのテストがあります。

私が期待/望んでいるのは、ボタンを指で押したままにすると、画面に触れるのをやめるまでプレーヤーが動き続けるということです。

ただし、プレーヤーを動かし続けるには、ボタンを指で押し続けるだけでプレーヤーを動かし続けるのではなく、常にタップし続ける必要があります。

私が望むことを達成するためにどのコードを使用する必要がありますか?

4

1 に答える 1

6

MouseEvent.MOUSE_DOWNこれを実現するには、その間で関数を継続的に実行する必要がありますEvent.MOUSE_UP。MouseEvent.MOUSE_DOWNは、プレスごとに1回だけディスパッチされます。

これを行うための簡単なスクリプトを次に示します。

myButton.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);

function mouseDown(e:Event):void {
    stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp); //listen for mouse up on the stage, in case the finger/mouse moved off of the button accidentally when they release.
    addEventListener(Event.ENTER_FRAME,tick); //while the mouse is down, run the tick function once every frame as per the project frame rate
}

function mouseUp(e:Event):void {
    removeEventListener(Event.ENTER_FRAME,tick);  //stop running the tick function every frame now that the mouse is up
    stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUp); //remove the listener for mouse up
}

function tick(e:Event):void {
    //do your movement
}

余談ですが、TOUCHイベントを使用すると、マルチタッチコントロールの柔軟性が高まります。一度に1つのアイテムしか押せないようにする場合でも、問題はありません。

これを行うには、ドキュメントクラスを追加Multitouch.inputMode = MultitouchInputMode.TOUCH_POINTしてから、MouseEventリスナーを適切なタッチイベントに置き換えます。

MouseEvent.MOUSE_DOWNになります:TouchEvent.TOUCH_BEGIN
MouseEvent.MOUSE_UPになります:TouchEvent.TOUCH_END

于 2012-09-12T19:30:55.237 に答える