2012-07-29 102 views
0

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

例如,有六个黑匣子,您在第一个黑匣子上点击,一个红球出现动画并移动到下一个场景。下一次你浏览这个项目时,你点击第一个盒子,而是一个绿色的球形动画。它不会移动到下一个场景。但红球将落在其他5个盒子之一的后面。一旦发现红球将执行动画并移动到下一个场景。

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

回答

0

我的理解是,您希望用户在其中一个黑盒子后面找到红球,但是每次玩红球时都会在随机选择的不同盒子后面,对吗? 在这种情况下,你可以这样做:

这五个盒子都存储在一个数组中。要选择哪个箱子球去的背后,做这样的事情:

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

该算法将给予4和0之间的随机数,所以ballBox然后可以用于访问随机盒阵列中,像这样的:

boxArray[ballBox]; 

这就是如何获得一个随机框的要点。剩下的就是把球放在那个盒子后面。

+0

我想知道它是否有某种形式的Math.random参与。谢谢。 – 2012-07-30 15:54:00

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

+0

谢谢,我会试试看。很有帮助 – 2012-07-30 15:53:27