ヒーローが投げる剣 (弾丸と考えてください) があります。タイルマップにヒットすると、メソッドを使用して剣 (弾丸) が殺されkill()
ます。しかし、予想外のことが起こりました。を使用する場合kill()
、exists = false または visible = false ALL OF THE GROUP IS GONE (killed または invisible)。
これらはいくつかのスニペットです:
Sword.as(base class for all swords) shoot function :
public function shoot(playerPosition:FlxPoint, direction:uint):void{
if(!alive || !exists){
revive();
}
x = playerPosition.x;
y = playerPosition.y;
if(direction == FlxObject.RIGHT) {
angularVelocity = 900;
velocity.x = 400;
} else {
angularVelocity = 900;
velocity.x = -400;
}
}
のサブクラスにSword(BasicSword)
は剣のグラフィックしかないので、言及する価値はありません。
PlayState.as
create (only part of it):
for(var i:int = 0; i < 15;i++) {
sword = new BasicSword(-200, -200);
swords.add(sword);
}
add(swords);
アップデート:
override public function update():void{
if(FlxG.keys.justPressed("X")) {
(swords.recycle(BasicSword) as BasicSword).shoot(new FlxPoint(player.x,
player.y),player.facing);
}
super.update();
FlxG.collide(level, player);//make the player stand on the level.
FlxG.collide(level, swords, swordsHitLevel);
}
swordsHitLevel(callback function):
public function swordsHitLevel(level:FlxTilemap, sword:FlxSprite):void {
sword.kill();
}