私は AS3 でのインターンシップのために、タッチスクリーンの点つなぎゲームを作成しています。これが私のゲーム フローの簡単な要約です。
- ユーザーがレベルを選択します。
- そのレベルの画像/座標が読み込まれ、画像がステージに追加されます。
- ドットの座標が読み込まれると (XML)、ドットにムービークリップ (
circlePoint
) が添付されます。これらのすべての MovieClip には、一意の値 (circlePoint.id
) と、起動するMouseEvent.MOUSE_OVER
リスナーがありますclickPoint()
。MovieClips は my にプッシュされますpointContainer
。 - 最初のドットから始まる直線がマウスに続きます。
gameCounter
変数が MovieClip の と同じである場合、id
線はドットにスナップし、新しい線がマウスに追従して開始されます。もちろん、この新しい行は、最後に触れたドットから始まります。
これらはすべて魔法のように機能していますが、1 つの問題に直面しています。マウスが MovieClip と衝突すると、線は現在のマウスの位置にスナップします。その位置は私のコーナーであり、私はcirclePoint
それが中心になりたい. そこで、現在のドットの中心から新しい行を開始することにしました。しかし、前の行はまだ の角にcirclePoint
あり、新しい行は中央から始まります。見栄えがよくありません。ドットのサイズを小さくしようと考えていましたが、タッチ スクリーン ゲームなので、ドットが小さすぎて触れられません。これは私がこれまでに書いたものです:
private function setStartPoint():void{
mouseLines.push(new Sprite);
stage.addChild(mouseLines[mouseLines.length-1]);
holderX = pointContainer.getChildAt(0).x;
holderY = pointContainer.getChildAt(0).y;
stage.removeEventListener(MouseEvent.CLICK, setStartPoint);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
stage.addEventListener(MouseEvent.CLICK, clickPoint);
}
このsetStartPoint()
関数は、すべての MovieClip がステージに追加されるとトリガーされます。
private function clickPoint(e:MouseEvent):void{
if(gameCounter == e.target.id){
holderX = e.target.x;
holderY = e.target.y;
mouseLines[mouseLines.length-1].graphics.lineTo(holderX, holderY);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
gameCounter++;
mouseLines.push(new Sprite);
stage.addChild(mouseLines[mouseLines.length-1]);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
}
}
clickPoint()
MOUSE_OVER
上記のように解雇されます。
private function mouseFollower(e:MouseEvent):void{
mouseLines[mouseLines.length-1].graphics.clear();
mouseLines[mouseLines.length-1].graphics.lineStyle(5,0x0000FF);
mouseLines[mouseLines.length-1].graphics.moveTo(holderX, holderY);
mouseLines[mouseLines.length-1].graphics.lineTo(mouseX, mouseY);
mouseLines[mouseLines.length-1].mouseEnabled = false;
}
mouseFollower()
関数は に線を引きますMOUSE_MOVE
。mouseEnabled
もちろん、false に設定されているため、クリックできません。
どんな助けでも大歓迎です。