ActionScript 3.0 随机化数组、显示数字并拼接该数字

Posted

技术标签:

【中文标题】ActionScript 3.0 随机化数组、显示数字并拼接该数字【英文标题】:ActionScript 3.0 Randomize array, display number, and splice that number 【发布时间】:2013-05-03 09:59:06 【问题描述】:

所以我正在构建一副纸牌。我把它们挡住了,并在屏幕上正确显示。现在我需要用数字 1-16 构建一个数组,并在卡片上随机显示它们而不重复任何数字。我的主要问题是我不知道如何在卡片上显示随机数。我已经填写了数组,卡片显示正确,我什至可以按顺序显示数字,但无法弄清楚随机显示数字的代码。提前致谢。

下面是我到目前为止的代码,它显示了带有数字顺序的卡片。

var numberOfColumns=8;
var cardNumber:Array = new Array();



        //---"for" function to display card columns---\\

for(var i:int = 1; i < 17; i++) 
var card = new Card(); 
cardNumber[i]= i;

card.x = ((i-1) % numberOfColumns) * 70; 
card.y = (Math.floor ((i-1)/numberOfColumns) * 80);

 card.cardTxt.text = i;

trace(i);//trace card count in Output

addChild(card);//add object to display list


trace(cardNumber);

【问题讨论】:

这对于新手来说是一个非常好的问题 - 您已经展示了您尝试过的所有内容以及您所处的位置,甚至还设法格式化了您的代码。伟大的工作。 【参考方案1】:

一种解决方案(绝对不是最好的)是用仅索引填充另一个数组,然后随机拼接它,如下所示:

var cardCount:int = 17;
var indexesArray:Array = [];

for(var j:int = 1; j < cardCount; j++)
    indexesArray.push(j)

for(var i:int = 1; i < cardCount; i++) 

    var card = new Card();

    //Use a random index inside the array length
    var randIndex:int = Math.round(Math.random()*indexesArray.length);

    cardNumber[i]= indexesArray[idIndex];

    //Strip out our used index so we can't use it again
    indexesArray.splice( randIndex, 1 );

    //... your code

但是我很确定一些逻辑怪胎可以提出更优化/更干净的解决方案,并且不需要第二个数组。

【讨论】:

哇,我意识到这个问题已经很老了,我正在浏览未回答的问题......希望它会对某人有所帮助:)

以上是关于ActionScript 3.0 随机化数组、显示数字并拼接该数字的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 随机化一个数组

[ActionScript 3.0] 获取随机颜色

在 ActionScript (3.0) 中干净地合并两个数组?

ActionScript 3.0 - 获取数组中相同值的计数

如何在 Actionscript 3.0 中获取数组的所有排列?

如何在Actionscript 3.0中获取数组的所有排列?