我正在接近为运行下面代码时生成的错误找到解决方案。
我在舞台上有三个盒子。目标是从数组中加载一个随机项,而不会在三个框中的多个框中复制任何一个项。Yasuyuki Uno非常乐于助人。我们目前正在尝试解决以下问题:
代码:
var animalArray: Array = [animal1, animal2, animal3, animal4, animal5, animal6, animal7, animal8, animal9, animal10];
var randArr: Array = [];
var rand: int;
// Get random value for 3 times.
for(var i:int=0,len:int=animalArray.length;i<3;i++,len--){
rand = Math.floor( Math.random() * len); // Generate random integer between 0 and len-1.
randArr.push(animalArray.splice(rand,1)); // Delete a value from original array and add that value to new array.
}
box1.addChild(randArr[0]);
box2.addChild(randArr[1]);
box3.addChild(randArr[2]);
错误消息:参数数量不正确。预期不超过0
非常感谢任何帮助。日Thnx!
答案 0 :(得分:0)
假设animal1
,animal2
等是您库中的链接ID,它们是类引用,因此需要使用new
运算符对它们进行实例化。
您的代码还有一些其他非关键问题,从我的角度来看很难理解:
animal1
代替Animal1
等等来使用类名。未大写的名称看起来像属性或函数,而不是类。Array
代替Vector
。向量可以提供更好的错误;如果你从一开始就使用矢量,你的问题就很明显了。示例:
var animalTypes:Vector.<Class> = new <Class>[Animal1, Animal2, Animal3, Animal4, Animal5, Animal6, Animal7, Animal8, Animal9, Animal10];
var randomAnimals:Vector.<DisplayObject> = new <DisplayObject>[];
// Get random value for 3 times.
for (var i:int = 0; i < 3; i++){
// Generate random integer between 0 and length-1.
var randomIndex:int = Math.random() * animalTypes.length;
// Remove a class from original vector.
var randomAnimalType:Class = animalTypes.splice(randomIndex, 1)[0];
// Create an instance of the animal class.
var randomAnimal:DisplayObject = new randomAnimalType();
// Add the instance to the random vector.
randomAnimals.push(randomAnimal);
}
box1.addChild(randomAnimals[0]);
box2.addChild(randomAnimals[1]);
box3.addChild(randomAnimals[2]);
答案 1 :(得分:-1)
当您检查animalArray的length
表达式时,无需更改变量len
。
此外,如果您想填充3个随机项新数组,则需要使用以下代码:
const arr: Array = [animal1, animal2, animal3, animal4, animal5, animal6, animal7];
const genArr: Array = [];
var len: int = arr.length;
var n: int = 3;
while(n--) {
const randIndex: int = Math.floor(Math.random()*len); // get random index
genArr.push(arr.splice(randIndex, 1)[0]); // splice returns array, so we need first and exist item
len--; // decrement length as optimized solution of no-read length of array each cycle
}
trace(genArr);