feathersui / feathersui-starling

User interface components for Starling Framework and Adobe AIR
https://feathersui.com/learn/as3-starling/
Other
914 stars 386 forks source link

Null Object Reference when removing feathers control while parent is added to stage #1798

Closed Adolio closed 4 years ago

Adolio commented 4 years ago

Hi Josh,

I just discovered an issue when I try to remove a child feathers control while the parent sprite is added to stage.

The following code reproduces the issue:

import starling.display.Sprite;
import starling.events.Event;
import feathers.controls.Button;

public class FeathersIssueTest extends Sprite
{
    private var _button:Button;

    public function FeathersIssueTest()
    {
        _button = new Button();
        addChild(_button);

        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    }

    private function onAddedToStage(event:Event):void
    {
        removeChild(_button);
    }
}

Stacktrace:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at feathers.core::FeathersControl/feathersControl_addedToStageHandler()[C:\Users\josht\Development\feathers\feathers\source\feathers\core\FeathersControl.as:3614]
    at starling.events::EventDispatcher/invokeEvent()[/Users/redge/Development/starling/starling/src/starling/events/EventDispatcher.as:159]
    at starling.events::EventDispatcher/dispatchEvent()[/Users/redge/Development/starling/starling/src/starling/events/EventDispatcher.as:130]
    at starling.display::DisplayObject/dispatchEvent()[/Users/redge/Development/starling/starling/src/starling/display/DisplayObject.as:737]
    at starling.display::DisplayObjectContainer/broadcastEvent()[/Users/redge/Development/starling/starling/src/starling/display/DisplayObjectContainer.as:425]
    at starling.display::DisplayObjectContainer/broadcastEventWith()[/Users/redge/Development/starling/starling/src/starling/display/DisplayObjectContainer.as:435]
    at starling.display::DisplayObjectContainer/addChildAt()[/Users/redge/Development/starling/starling/src/starling/display/DisplayObjectContainer.as:135]
    at starling.core::Starling/initializeRoot()[/Users/redge/Development/starling/starling/src/starling/core/Starling.as:376]
    at starling.core::Starling/initialize()[/Users/redge/Development/starling/starling/src/starling/core/Starling.as:366]
    at starling.core::Starling/onContextCreated()[/Users/redge/Development/starling/starling/src/starling/core/Starling.as:601]

Best, Aurélien

joshtynjala commented 4 years ago

I can reproduce this issue. Thanks!