0

クリックして次の画面に移動したときにアニメーションを再生する方法を探しています。しかし、新しいアニメーションでステージ上の別の場所にランダムに生成されます。ない場所をクリックすると、別のアニメーションが再生されますが、プロジェクトの次の部分に進みません。

たとえば、6 つのブラック ボックスがあり、最初のブラック ボックスをクリックすると、赤いボールが表示され、次のシーンに移動します。次にプロジェクトを実行するときは、最初のボックスをクリックしますが、代わりに緑色のボールがアニメーション化されます。次のシーンには進まない。ただし、赤いボールは他の 5 つのボックスのいずれかの後ろにあります。赤いボールが見つかると、アニメーションが実行され、次のシーンに移動します。

誰かが私のなぞなぞを理解できるなら、私は大いに感謝します。ありがとうございました。

4

2 に答える 2

3

6 つのボックスが配置されていて、それぞれに 、 、 などのインスタンス名が付いてbox1いるbox2場合box3...

グリッド

そして、ライブラリにシンボルが次のように定義されているとします。

図書館

アクションで実装できます:

import flash.events.MouseEvent;
import flash.display.MovieClip;

// determine which box moves forward
var targetBox:uint = Math.ceil(Math.random() * 6);
trace("looking for box: " + targetBox);

// add mouse click event listeners to the boxes
box1.addEventListener(MouseEvent.CLICK, boxClickHandler);
box2.addEventListener(MouseEvent.CLICK, boxClickHandler);
box3.addEventListener(MouseEvent.CLICK, boxClickHandler);
box4.addEventListener(MouseEvent.CLICK, boxClickHandler);
box5.addEventListener(MouseEvent.CLICK, boxClickHandler);
box6.addEventListener(MouseEvent.CLICK, boxClickHandler);

// add "targetId" property to each movie clip
box1.targetId = 1;
box2.targetId = 2;
box3.targetId = 3;
box4.targetId = 4;
box5.targetId = 5;
box6.targetId = 6;

function boxClickHandler(event:MouseEvent):void
{
    // get the movie clip of box clicked:
    var clickedBox:MovieClip = event.target as MovieClip;

    // remove mouse click for this box in the future
    clickedBox.removeEventListener(MouseEvent.CLICK, boxClickHandler);

    // if clicked box targetId matches our target Box call
    // boxFound function; otherwise, otherwise, wrong target.
    if(targetBox == clickedBox.targetId)
        boxFound(clickedBox);
    else
        wrongBox(clickedBox);
}


function boxFound(clickedBox:MovieClip):void
{
    // add red ball
    var redBall:RedBall = new RedBall();
    addChild(redBall);

    redBall.x = clickedBox.x;
    redBall.y = clickedBox.y;

    // go to next frame after animation completes...
}

function wrongBox(clickedBox:MovieClip):void
{
    // add green ball
    var greenBall:GreenBall = new GreenBall();
    addChild(greenBall);

    greenBall.x = clickedBox.x;
    greenBall.y = clickedBox.y;
}

これにより、次のようになります。

ゲームプレイ

Flash Pro CS 5 FLA のサンプル ソース コードはこちらからダウンロードできます

ここで SWF の例を表示します

于 2012-07-29T21:42:10.070 に答える
0

私が理解しているのは、ユーザーに黒いボックスの背後にある赤いボールを見つけてもらいたいということですが、赤いボールをプレイするたびに、ランダムに選択された別のボックスの後ろにありますよね? その場合、次のようなことができます。

5 つのボックスが配列に格納されます。ボールが後ろに行くボックスを選択するには、次のようにします。

ballBox:int = Math.random() * (4 + 1);

このアルゴリズムは 4 から 0 の間の乱数を与えるため、ballBox次のように配列内のランダム ボックスにアクセスするために使用できます。

boxArray[ballBox];

以上がランダムボックスの入手方法の要点です。残りはそのボックスの後ろにボールを置くだけです。

于 2012-07-29T21:37:33.883 に答える