假设我有一个数组,数组中的每个项目都有一个对应的库项目。
我想做这样的事情:
var rando = Math.round(Math.random()*3)
var myArray = new Array ["ball", "wall", "fall"]
var i:myArray[rando] = myArray[rando] new myArray[rando]()
addChild(i)
但是,这行不通。有什么 secret 吗?
谢谢,
维克多·雨果
最佳答案
很惊讶没有人提到getDefinitionByName()
在这里。
这里有一些完整的代码,可以让您的示例正常工作:
var myArray = ["ball", "wall", "fall"];
/**
* Creates a random instance based on an input array containing class names as Strings.
* @param The input array containing aforementioned Strings.
* @return The newly created instance.
*/
function createRandom(typeArray:Array):*
{
// Select random String from typeArray.
var selection:String = typeArray[ int(Math.random() * typeArray.length) ];
// Create instance of relevant class.
var Type:Class = getDefinitionByName(selection) as Class;
// Return created instance.
return new Type();
}
// Randomly create and add instance.
var instance:DisplayObject = createRandom(myArray);
addChild(instance);
关于arrays - AS3 : AddChild based on Array Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405961/