gpt4 book ai didi

actionscript-3 - 如何从 Flash CS4 AS3 中的屏幕中删除所有一类 child ?

转载 作者:行者123 更新时间:2023-12-02 02:14:33 24 4
gpt4 key购买 nike

好吧,我已经坚持了大约三个小时了,我终于想寻求帮助了。

基本上,当我的玩家飞船与其中一个敌人接触时,我试图从屏幕上移除所有敌方对象实例,因为他随后失去了生命并被放回屏幕上的安全位置。

编辑:这是我的 Enemy Dude .as 文件中的所有代码,可能有点过分,但无论如何。

package
{
import flash.display.MovieClip;
import flash.events.*;
import flash.media.Sound;
import flash.media.SoundChannel;
public class Enemydude extends MovieClip
{
private var _root:Object;
private var speed:int = 6;
private var shipps = this
public function Enemydude()
{
addEventListener(Event.ADDED, beginclass);
addEventListener(Event.ENTER_FRAME, entFrame);
}

private function beginclass(event:Event):void
{
_root = MovieClip(root);
}

private function entFrame(event:Event):void
{
x -= speed;
if(this.x < -64)
{
removeEventListener(Event.ENTER_FRAME, entFrame);
_root.removeChild(this)
}
if(_root.gameover)
{
x = -700
removeEventListener(Event.ENTER_FRAME, entFrame);
removeEventListener(Event.ADDED, beginclass);
}
for (var i:int = 0; i<_root.playerBulletContainer.numChildren; i++)
{
var bulletTarget:MovieClip = _root.playerBulletContainer.getChildAt(i)
if (hitTestObject(bulletTarget))
{
removeEventListener(Event.ENTER_FRAME, entFrame);
_root.removeChild(this);
_root.playerBulletContainer.removeChild(bulletTarget);
bulletTarget.removeListeners();
_root.Score += 10
makeExplosion();
}
}
if(hitTestObject(_root.mcship))
{
makeExplosion();
shipPos();
removethis();
}

}
private function makeExplosion()
{
var sndExplode:snd_explosion1;
var sndExplodeChannel:SoundChannel;
sndExplode=new snd_explosion1();
sndExplodeChannel=sndExplode.play();
var newExplosion01:explosionEffect=new explosionEffect ;
newExplosion01.x=this.x;
newExplosion01.y=this.y;
_root.explosionContainer.addChild(newExplosion01);

}
private function shipPos()
{
_root.lives -= 1;
_root.mcship.x = 80;
_root.mcship.y = 225;
for each(var i:Enemydude in _root.enemies)
{
removethis();
}

_root.enemies.length = 0;
}
public function removethis():void
{
if(parent) parent.removeChild(this)
removeEventListener(Event.ENTER_FRAME, entFrame);
}
}
}

编辑:这是我现在拥有的与我的主要时间线中的 Enemydude 相关的代码,对此我深表歉意。

var enemies:Array = [];
var Shipheight:Number = 300;
var Enemytime:int = 0;
var Enemylimit:int = 16;

if (Enemytime<Enemylimit)
{
Enemytime ++;
}
else
{
var newEnemy01 = new Enemydude();
newEnemy01.y = Shipheight;
newEnemy01.x = stage.stageWidth + 64;
addChild(newEnemy01);
enemies.push(newEnemy01);
Enemytime = 0

function shipY(event:Event):void
{
Shipheight = Math.ceil(Math.random()* 250) + 80;
}

提前感谢您的帮助,如有任何建议,我们将不胜感激。

最佳答案

我建议将你的敌人存储在一个数组中。

例如,创建数组enemies:

var enemies:Array = [];

然后将您的代码修改为:

else
{
var newEnemy01 = new Enemydude();

newEnemy01.y = Shipheight;
newEnemy01.x = stage.stageWidth + 64;

addChild(newEnemy01);
enemies.push(newEnemy01);

Enemytime = 0;
}

这样你就可以使用这个新数组移除所有敌人:

for each(var i:Enemydude in enemies)
{
i.remove(); // Or whatever function Enemydude has to remove itself.
}

// Empty the enemies Array.
enemies.length = 0;

这是您可以为 Enemydude 创建的 .remove() 方法:

public function remove():void
{
if(parent) parent.removeChild(this);

// Remove any event listeners etc from this object.
}

关于actionscript-3 - 如何从 Flash CS4 AS3 中的屏幕中删除所有一类 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com