我有一个数组,其中包含一堆对象。这些对象具有许多不同的属性。但是我希望每个对象包含的一个东西是一个movieclip,但是我无法将movieclip放入对象中。基本上我所拥有的是(非常简化):
var groupArray:Array = new Array();
for (var i=0;i<numGroups;i++){
var groupObject:Object = new Object();
groupArray.push(groupObject)
}
我想做的是这个(后面的代码):
var groupClip:MovieClip = new MovieClip();
groupArray[i].addChild(groupClip)
但这不起作用。如何制作对象的movieclip部分?
答案 0 :(得分:2)
如果我理解你的问题,那么你就是这样做的:
var array:Array = new Array();
var length:int = 5;
for (var i:uint = 0; i < length; i++)
{
var object:Object = new Object();
array.push(object);
}// end for
var movieClip:MovieClip = new MovieClip();
array[0].movieClip = movieClip;
trace(array[0].movieClip)// output: [object MovieClip];
前一个与以下相同(除了数组中只有一个元素而不是五个):
var array:Array = new Array();
var object:Object = new Object;
var movieClip:MovieClip = new MovieClip();
object.movieClip = movieClip; // or object["movieClip"] = movieClip;
array.push(object);
trace(array[0].movieClip)// output: [object MovieClip];
答案 1 :(得分:1)
addChild仅对从DisplayObjectContainer继承的类存在,而Object不存在。
从DisplayObjectContainer继承的类的示例:Sprite和MovieClip。
您可以在此处详细了解:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChild()
答案 2 :(得分:0)
对象可以包含任何内容。您可以在运行时动态创建或访问对象上现有或不存在的任何属性。您的第一个问题是Object没有“推送”功能。要为Object分配任何内容,可以使用键/值表示法。
object["foo"] = new MovieClip();
trace(object.foo);
trace(object["foo"]);
编辑:要么我之前的阅读已关闭,要么您编辑了样本,因此不再适用... 但是看起来您希望 groupObject成为一个数组,因为您正在使用i变量试图引用一个剪辑...所以为什么不把它变成一个数组呢?这样你就可以使用推送功能,所有内容都按照数字方式编制索引,就像你看起来一样。
很难确定,但看起来你的代码最后一行会出现逻辑错误。我变量在哪里设置?此外,看起来你试图在一个Object上调用addChild,而不是在你认为你正在存储的movieclip上调用...这将无法工作因为对象没有addChild函数。