我已经在一个数组中存储了一系列重复的动画片段,因此我可以检查是否有任何子弹击中任何敌人的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;
}
答案 0 :(得分:0)
如果要在库中创建剪辑的实例而不是复制已创建的对象,似乎您希望使用attachMovie()
而不是duplicateMovieClip
。在这种情况下,重写创建代码如下:
_root.attachMovie(circlebase, "circle" + circleCount, circleCount);
bulletArray.push(_root["circle"+circleCount]);
答案 1 :(得分:0)
我解决了。这是因为我使用了duplicateMovieClio的全局版本而不是类版本。再次感谢!