所以敌人确实丢了一枚硬币,但是我没有获得硬币的属性(如果它击中了玩家,它会给他+5个硬币)
如果硬币击中舞台的底部,如果玩家死亡或者玩家击中它,硬币将被移除。可悲的是,它不起作用。
但如果我在开始游戏之前在舞台上放置一枚硬币,它会获得所有属性,那么它确实有效,所以它必须是它被添加到舞台的那一刻它没有与编码或某事.....这就是我现在所处的位置。
这是硬币的.as文件:
包 {
import flash.display.MovieClip;
import flash.events.Event;
public class Coin1 extends MovieClip
{
private var _root:Object;
private var speed:int = 0;
public function Coin1()
{
addEventListener(Event.ENTER_FRAME, Speed1);
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, coin1go);
}
private function beginClass(event:Event):void
{
_root = MovieClip(root);
}
private function Speed1(event:Event):void
{
y += speed;
}
private function coin1go(event:Event):void
{
if (this.y > stage.stageHeight)
{
removeEventListener(Event.ENTER_FRAME, coin1go);
_root.removeChild(this);
}
if (hitTestObject(_root.player_mc))
{
_root.coin += 1;
removeEventListener(Event.ENTER_FRAME, coin1go);
_root.removeChild(this);
}
if (_root.playerhealth <= 1)
{
removeEventListener(Event.ENTER_FRAME, coin1go);
_root.removeChild(this);
}
}
}
}
这是将其添加到舞台的部分:
if (enemy2health <= 0)
{
removeEventListener(Event.ENTER_FRAME, eFrame);
_root.score += _root.Enemy2Score * _root.scoremultiplyer;
stage.addChild(newExplosionSmall)
newExplosionSmall.x = this.x;
newExplosionSmall.y = this.y;
stage.addChild(newCoin1)
newCoin1.x = this.x;
newCoin1.y = this.y;
屁股你可以看到还有一个爆炸的附加组件可以完美地运行,但这可能是因为它除了出现之外什么也没做,并且自行移除。
如此长的故事简短:敌人掉落硬币但它什么也没做,浮在屏幕的底部,我得到了1009个错误的恒定流。所以有人知道如何解决这个问题吗?
答案 0 :(得分:0)
只有在收到有效stage
引用后才应添加一个enterframe侦听器,该引用仅在收到Event.ADDED_TO_STAGE
事件时显示。这是因为您的enterframe侦听器引用了stage。
public function Coin1()
{
addEventListener(Event.ENTER_FRAME, Speed1);
addEventListener(Event.ADDED_TO_STAGE, beginClass);
}
private function beginClass(event:Event):void
{
_root = MovieClip(root);
addEventListener(Event.ENTER_FRAME, coin1go);
}