对象是否可以包含flash actionscript中的影片剪辑?



我有一个数组,其中包含一堆对象。这些对象有很多不同的属性。但我希望每个对象都包含一个影片剪辑,但我在把影片剪辑放入对象时遇到了麻烦。基本上我得到的是(非常简化的):

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)

但这不起作用。如何使影片剪辑成为对象的一部分?

如果我对你的问题理解正确,那么你应该这样做:

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];

addChild只存在于从DisplayObjectContainer继承的类中,而Object不存在。

继承DisplayObjectContainer的类的例子:Sprite和MovieClip。

您可以在这里阅读更多信息:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChild()

对象可以包含任何内容。您可以在运行时动态地创建或访问对象上存在或不存在的任何属性。你的第一个问题是Object没有"push"功能。要将任何东西赋值给对象,可以使用键/值表示法。

object["foo"] = new MovieClip();
trace(object.foo);
trace(object["foo"]);

编辑:要么我之前的阅读是关闭的,要么你编辑了样本,所以这不再适用…但是它看起来像你想要 groupObject是一个数组,因为你正在使用i变量来尝试引用剪辑…为什么不把它做成一个数组呢?这样你就可以使用push函数,所有的东西都是数字索引,就像你期望的那样。

这很难确定,但看起来你在代码的最后一行会有一个逻辑错误。变量i在哪里设置?此外,它看起来像你试图在一个对象上调用addChild,而不是在你认为你正在存储的影片剪辑上…那不起作用,因为Object没有addChild函数。

相关内容

最新更新