2012-03-22 41 views
0

我有3影片剪輯在舞臺上是MC1,MC2, 起初他們是α= 0[AS3]隨機做一些不重複

我想是當我點擊revealBtn,其中1將顯示爲alpha = 1。

但是用我的代碼下面,有時我需要點擊5次左右或更多,才能讓所有這些mc顯示出來。

有什麼我想要的解決方案嗎?我嘗試拼接,但它仍然不能正常工作。

var mcArray:Array = [mc1,mc2,mc3]; 
for (var j:int = 0; j < mcArray.length; j++) 
{ 
    mcArray[j].alpha = 0; 
} 

revealBtn.buttonMode = true; 
revealBtn.useHandCursor = false; 
revealBtn.addEventListener(MouseEvent.CLICK, revealClick); 

function revealClick(event:MouseEvent):void 
{ 
    var i:Number = Math.floor(Math.random() * mcArray.length); 
    var movieClipToEdit:MovieClip = mcArray[i] as MovieClip; 
    movieClipToEdit.alpha = 1; 
} 
+0

你的問題是,當你點擊隨機返回影片剪輯已經有阿爾法1,所以你必須點擊,直到發現一個影片剪輯具有阿爾法= 0 – mgraph 2012-03-22 11:23:05

+0

可你至少響應 – mgraph 2012-03-22 11:39:01

+0

對不起,還嘗試了腳本。 我有點想法如何實現我想要的。 但@Nox Noctis的回答也很好!多謝你們!!! – pizza0502 2012-03-22 11:56:41

回答

1

這是許多可能的解決方案之一。它破壞了初始數組。如果您不想更改初始數組,其餘部分取決於您實際想要實現的內容。

var invisibleList:Array = [mc1,mc2,mc3]; 
for (var j:int = 0; j < invisibleList.length; j++) 
{ 
    invisibleList[j].alpha = 0; 
} 

revealBtn.buttonMode = true; 
revealBtn.useHandCursor = false; 
revealBtn.addEventListener(MouseEvent.CLICK, revealClick); 

function revealClick(event:MouseEvent):void 
{ 

    if (invisibleList.length == 0) { 
     return; 
    } 
    var i:Number = Math.floor(Math.random() * invisibleList.length);  
    var movieClipToEdit:MovieClip = invisibleList[i] as MovieClip; 
    invisibleList.splice(i, 1); 
    movieClipToEdit.alpha = 1; 
} 
0

製作第二個陣列作爲您的選擇源。每次你選擇一個項目時,Splice它來自第二個陣列。此外,由於您的所有項目都是影片剪輯,因此您應該使用Vector

var mcVector:Vector.<MovieClip> = [mc1,mc2,mc3]; 
var vector2:Vector.<MovieClip> = mcVector.Slice(0); // This just copies the Vector 
for (var j:int = 0; j < mcVector.length; j++) 
{ 
    mcVector[j].alpha = 0; 
} 

revealBtn.buttonMode = true; 
revealBtn.useHandCursor = false; 
revealBtn.addEventListener(MouseEvent.CLICK, revealClick); 

function revealClick(event:MouseEvent):void 
{ 
    var i:Number = Math.floor(Math.random() * mcVector.length); 

    // Retrieves and deletes the item in one step: 
    var movieClipToEdit:MovieClip = vector2.Splice(i, 1); 
    movieClipToEdit.alpha = 1; 
}