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 の例を表示します。