hittest,removechild,不可见对象仍然存在问题,flash,as3

时间:2013-05-12 16:25:44

标签: actionscript-3 flash hittest removechild

我正在尝试删除名为'_pokemon'的对象。如果它被称为'_jednaLinia'(意为'_oneLine')的降雨击中十次就应该被移除。我确实使用了这段代码,是的,我的_pokemon确实消失了,但仍然可以在handleColisin函数中检测到它。主类仍然继续引用它,因为我在Pokemon类上得到了这个错误

  

错误#1009:无法访问空对象引用的属性或方法。


我退出了AS3的新手并尝试了许多简单的解决方案,但似乎没有任何工作方式。 如果可能请回答。

 ## some code I think is necessary, not all of it
...
public class Main extends Sprite 
{

    private var _pokemon:Pokemon;       
    public function Main():void 
    {   
        _starTimer = new Timer(30); 
        addEventListener(Event.ADDED_TO_STAGE, init);
        _starTimer.addEventListener(TimerEvent.TIMER, start);

    }
    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);    
        _starTimer.start();
        this.addChild(_pokemon);

    }




...and further...

    private function _pokemonLive(e:Event = null):void
    {           
        decreaseLive--;         
        if (decreaseLive == 0)
        {               
            _pokemon.parent.removeChild( _pokemon );/i think i tried all methods
            _starTimer.stop();
        }
    }

就像我提到的那样。我在Pokemon Class上遇到错误,它有随机移动功能。这是错误1009显示的地方。如有必要,我会发送更多代码。

1 个答案:

答案 0 :(得分:0)

将'dead'布尔值添加到'Main'类。

更改

private function _pokemonLive(e:Event = null):void
    {           
        decreaseLive--;                       
            _pokemon.parent.removeChild( _pokemon );
            _starTimer.stop();
    }

private function _pokemonLive(e:Event = null):void
    {           
        if(dead == false)
        {     
        decreaseLive --;   
        if (decreaseLive == 0)
        {            
            dead = true;  
            _pokemon.parent.removeChild( _pokemon );/i think i tried all methods
            _starTimer.stop();
        }
        }
    }