2014-10-16 79 views
0

我面临着我的Flash项目的问题。我正在制作我自己的太空船格斗游戏版本。有一次,我想随机产生敌人。这是我正在做的。Flash AS2 - 重复的影片剪辑从舞台上消失

我在图书馆里有一个movieclip,叫做enemyShip,AS-Linkage是normalEnemy。对象未放置在场景中。 在这个框架的actionScipt上,我有下面的代码,这对我来说是这样。发生的事情是这样的:前两个敌人正确地展开,从每个新生成的隐藏物的第三个开始,但不删除前面的那个。第二个敌人是第一个消失。第一个敌人保持可见。想法请?我曾尝试duplicateMovieClip和attachMovieClip,他们都有相同的结果。很抱歉,很长的问题!

var origEnemy:MovieClip = _root.attachMovie("normalEnemy", "origEnemy", this.getNextHighestDepth(); 
var numberOfEnemies:Number = 1; 
var enemyIndex:Number = 0; 

_root.onLoad(); 
{ 
    spawnEnemy(); 
    interval = setInterval(spawnEnemy,1000 + Math.random() * 2000); 
}; 
// Spawns new enemies 
function spawnEnemy() 
{ 
    if (numberOfEnemies > 10) 
    { 
     clearInterval(interval); 
    } 
    // Randomly calculate the starting coordinates of newly spawned enemy 
    var x_position = Math.random() * 50; 
    var y_position = Math.random() * 700; 

    // spawn a new enemy and assign random location 
    enemiesArray.push(origEnemy.duplicateMovieClip("enemy" + enemyIndex, this.getNextHighestDepth())); 

    //_root.attachMovie("normalEnemy","enemy" + enemyIndex,this.getNextHighestDepth()); 

    // assign random location 
    enemiesArray[enemyIndex]._x = x_position; 
    enemiesArray[enemyIndex]._y = y_position; 

    // incerement number of enemies 
    numberOfEnemies++; 
    // Increment enemy Index 
    enemyIndex++; 
} 

回答

0

From the documentation on duplicateMovieClip

如果父影片剪辑被删除,复制的影片剪辑也被删除。

改为使用attachMovie。这将防止父级影片剪辑被删除,这将阻止您遇到的问题。

此外,您需要使用_root.getNextHighestDepth()。否则,您可能会将每个对象附加在相同的深度处......再次清除您的重复项。