所以我有這樣的代碼隨機陣列選擇索引,然後顯示匹配MC
function flip(e:MouseEvent)
{
//assign choice a random deck index.
choice=int(deck[Math.round((Math.random()*deck.length))]);
if(choice!=int(deck[9]))
{
//removeChild(MovieClip(e.target));
//position firecard.
addChild(fire);
fire.x=e.target.parent.x;
fire.y=e.target.parent.y;
//remove cardback
e.target.parent.removeChild(MovieClip(e.target));
fire.parent.setChildIndex(fire,numChildren-2);
trace(choice);
}
else if(choice==int(deck[9]))
{
trace(choice);
water.x=e.target.parent.x;
water.y=e.target.parent.y;
e.target.parent.removeChild(MovieClip(e.target));
water.parent.setChildIndex(water,numChildren-2);
}
}
評論解釋幾乎是應該做的一切。通過動畫片段的偵聽器調用翻轉。選擇是每次調用flip時隨機選取的數字,並從甲板陣列的隨機索引中獲取其值。然後,不管選擇什麼,被點擊的卡片被移除並且根據選擇的變量在其位置上放置卡片。但是,會發生兩個錯誤(在編譯器或輸出中沒有任何操作發生)。
當我點擊另一張卡時,新創建的卡(火)也被刪除。我希望他們留在原地。
跟蹤總是打印一個0.不應該打印像0到9之間的任何東西嗎?
PS:甲板有10個值。其中9個是「火」,最後是「水」。選擇從0初始值開始。
我不確定這是否相關,但我認爲你應該使用Math.floor()而不是Math.round()。使用Math.round()會導致最終數字減少。 – mitim
Math.round()不是關於某些東西會少一些,它是關於分數四捨五入的方式Math.round(Math.random()* 10),您將有0..10包含意味着您的數組將拋出錯誤爲對於10的長度它將有0..9個索引。 –
這是真的,但我也想說,由於這個舍入,一個'結束'數字,比如說'0'會因此而減少,因爲0的範圍只有0到0.4999,爲0.之後,0.5到1.49999將被舍入到'1',這導致'0'出現少於其他數字。 – mitim