メインのレベル 1 クラスと、レベル 1 の子としての画像、スプライト、およびムービークリップがたくさんあります。
/**
* @desc This handles any touch event interactions in the level
* @param event
*/
private function touchInteractionHandler(event:TouchEvent):void {
//register event listeners for touches
var touchBegan:Touch = event.getTouch(this, TouchPhase.BEGAN);
var touchEnded:Touch = event.getTouch(this, TouchPhase.ENDED);
var touchHover:Touch = event.getTouch(this, TouchPhase.HOVER);
//listen for touches that have just ended
if (touchEnded) {
if ( touchEnded.tapCount == 2 ) {
//get object touched
var object = event.target;
//check if player is in walking range. if so then walk to that position of touch.globalx and y
playerWalkCheck(touchEnded.globalX, touchEnded.globalY);
}
}
}
自分のタッチをゲームに集中させたい。ステージ上のすべてのムービークリップに複数のリスナーを配置する代わりに、メインのタッチ イベントで何がタッチされたかをリッスンするようにします。
例: ステージ上に Bob という犬がいて、ダブルタップすると、上記の touchInteractionHandler() メソッドが呼び出されます。
ムービークリップ オブジェクトを取得してトレースする方法を知っています。
trace(event.target);
[object MovieClip]
ムービークリップの名前を特定する方法がわからないので、次のことを実行できます(疑似)
if movieclip is bob ->
//do something with bob
else if movieclip is charlie ->
//do something wit charlie
else ->
make player walk to a position e.g. playerWalkCheck(touchEnded.globalX, touchEnded.globalY);
これは私のゲーム プロジェクトにとって大きな負担であり、解決策があれば非常に役立ちます