将实例从数组添加到另一个动画片段

时间:2012-05-26 11:08:57

标签: arrays adobe export actionscript-2 instance

我做ActionScript 3.0编程,我非常清楚。我有一个使用ActionScript 2.0的项目,我在向舞台添加实例时遇到了一个简单的问题。在ActionScript 3.0中,当我想将多个实例添加到某个Movie Clip时,首先我将它们保存在一个数组中,然后我使用该数组来设置X和Y以及宽度和alpha以及其他细节。

示例:

itemBlock”是我的实例,它是库中的导出动画片段。

for ( var i = 0 ; i < 24 ; i++ ) {
blockBANK[i] = new itemBlock(); // itemBlock is an exported movieclip in the library. 
blockBANK[i].x = // some calculation;
blockBANK[i].y = // some other calculation;
mainPage_mc.addChild(blockBANK[i]); // add to the mainPage_mc  holder
}

现在我可以使用这个数组在我的AS3代码中的任何地方添加和编辑我的实例。 在AS2中,我尝试了这些但是没有工作,还有 NO 编译器错误!

for (var i=0;i<7;i++) { 
    var temp:MovieClip = new MovieClip();
    temp.attachMovie("itemBlock "," itemBlock "+i,0); 
    textboxBANK[i].addChild(temp);
    textboxBANK[i]._y = 40; 
    textboxBANK[i]._x = i * 20; 
    mainPage_mc.addChild(textboxBANK[i]);// add to holder
}

无法正常工作且无编译错误

for (var i=0;i<7;i++) { 
    var temp:MovieClip = new MovieClip();
    temp.attachMovie("itemBlock","itemBlock"+i,0); 
    textboxBANK[i].attachMovie(temp);
    textboxBANK[i]._y = 40; 
    textboxBANK[i]._x = i * 20; 
    mainPage_mc.attachMovie(textboxBANK[i]);// add to holder
}

没有再次工作且没有编译器错误..

我如何将实例放入数组并将添加它们添加到持有者 FROM AS2中的那个数组?

1 个答案:

答案 0 :(得分:1)

据我所知,您使用 createEmptyMovieClip 方法在AS2中创建一个新的MovieClip。此外,AS2中不支持 addChild 方法。

AS2显示列表与AS3显示列表完全不同。显示对象仅在舞台上时才存在(与AS3不同,AS3可以使用存储的DisplayObject遍历显示树)。简而言之,如果您尝试将MovieClip存储在一个数组中,以便稍后添加到该阶段,则无法实现。

您需要做的是将它们添加到舞台上,并弄乱它们的* _visible *属性。然后在稍后阶段让它们可见。这里有一些代码,基于我理解你想做的事情......

var tempClips:Array = new Array();

for(var i = 0; i < 10; i++){

    var temp = mainStage.createEmptyMovieClip("temp"+i, mainStage.getNextHighestDepth());

    var temp_inner = temp.attachMovie("exportedLibrarySymbol", "temp_inner", temp.getNextHighestDepth());

    temp._visible = false; //or true if you want them to be seen instantly

    temp._x = someCalculation;
    temp._y = someCalculation;

    tempClips.push(temp);

}

请注意,在AS2中,如果您尝试在相同深度处向舞台添加内容,原始显示对象将消失。使用 getNextHighestDepth 方法确定正确的整数。

更好地描述您尝试做的事情会非常有帮助。