随机动画放置在闪光灯中

时间:2012-07-29 21:10:27

标签: actionscript-3 flash flash-cs5

我正在寻找一种方法来点击动画播放到下一个屏幕。但是要使用新动画随机生成到舞台上的不同位置。当点击它不在的地点时,它会播放不同的动画,但不会前进到我项目的下一部分。

例如,有六个黑盒子,你点击第一个黑盒子,一个红色的球出现动画并移动到下一个场景。下次进行项目时,单击第一个框,而不是绿色球动画。它不会移动到下一个场景。但红球将落后于其他5个方框中的一个。一旦找到,红球将动画并继续前进到下一个场景。

如果有人能弄清楚我的谜语,我非常感激。谢谢。

2 个答案:

答案 0 :(得分:3)

如果您有6个方框,每个方框的实例名称为box1box2box3等等......

grid

并且鉴于您在库中的符号定义为:

library

您可以在行动中实施:

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;
}

这给了你:

game play

Download Flash Pro CS 5 FLA example source code here

View SWF example here

答案 1 :(得分:0)

据我所知,你希望用户在其中一个黑匣子后面找到红色球,但每次你玩红球都是在一个不同的随机选择的方框后面,对吗? 在这种情况下,你可以这样做:

五个盒子存储在一个数组中。要选择球落后的方框,请执行以下操作:

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

该算法将给出一个介于4和0之间的随机数,因此ballBox可用于访问数组中的随机框,如下所示:

boxArray[ballBox];

这是如何获得一个随机盒子的要点。其余的只是把球放在那个盒子后面。