2012-07-29 51 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