AS2-我的动画片段存储在一个数组中,但我无法访问它们的属性或方法

时间:2012-02-19 12:22:05

标签: flash actionscript actionscript-2 movieclip hittest

我已经在一个数组中存储了一系列重复的动画片段,因此我可以检查是否有任何子弹击中任何敌人的MC。但是,Flash不允许我访问动画片段上的属性或方法。

function checkHits(){//checks for hits between enemies and bullets
for (var zz = 0; zz < bulletArray.length; zz += 1)//checks for each bullet
{
for(var yy=0;yy<enemiesArray.length;yy+=1){//checks for each enemy
    trace("enemies loc"+yy+":"+enemiesArray[yy]);
    trace("bullet loc"+zz+":"+bulletArray[zz]);
    if(bulletArray[zz].hitTest(enemiesArray[yy])){
        trace("HIT!");
       removeMovieClip(bulletArray[zz]);
       removeMovieClip(enemiesArray[yy]);
       bulletArray.splice(zz,1);
       enemiesArray.splice(yy,1);
       }//end if
}//end for
 }//end for

这是代码,它会一直运行并检查是否有任何符号。 hitTest永远不会注册,但如果我更改hitTest对象,removeMovieClip确实有效。所以我可以成功引用该对象,但我无法访问任何属性。如果我尝试,他们总是未定义。

供参考,这是子弹生成的代码。请注意,这两个函数都是根级函数。

function dupeCircle()
{
//trace("Dupe circle initiated");
duplicateMovieClip(circlebase, "circle" + circleCount, circleCount);
bulletArray.push("circle" + circleCount);
trace(bulletArray[0]._width);
circleCount += 1;
}

2 个答案:

答案 0 :(得分:0)

如果要在库中创建剪辑的实例而不是复制已创建的对象,似乎您希望使用attachMovie()而不是duplicateMovieClip。在这种情况下,重写创建代码如下:

_root.attachMovie(circlebase, "circle" + circleCount, circleCount);
bulletArray.push(_root["circle"+circleCount]);

答案 1 :(得分:0)

我解决了。这是因为我使用了duplicateMovieClio的全局版本而不是类版本。再次感谢!