Как программно добавить компонент flex из класса Papervision без использования this.parent ...? - PullRequest
0 голосов
/ 31 марта 2011

У меня есть приложение Flex и PaperView BasicView.Я хотел бы добавить новый гибкий UIComponent (например, кнопку) из класса papervision.Я разместил полный пример кода ниже.Это работает, но я бы хотел достичь своей цели без "(this.parent.parent as Group) .addElement (button);"line.

<!--Application MXML-->
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="50" minHeight="50"
        creationComplete="Init()" applicationComplete="Start()">
    <fx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            import spark.components.Button;
            public var start:QuickStart;
            public function Init():void
            {
                start = new QuickStart();
                var uicomp:UIComponent = new UIComponent();
                addElement( uicomp );
                uicomp.addChild( start );
            }

            public function Start():void
            {
                start.GoTime();
            }
        ]]>
    </fx:Script>
</s:Application>


//QuickStart.as
package{
    import org.papervision3d.view.BasicView;
    public class QuickStart extends BasicView
    {
        public function QuickStart()
        {
            super(500, 500, true, true);
        }

        public function GoTime():void
        {
            var button:Button = new Button;

            //this is the offending line
            (this.parent.parent as Group).addElement(button);
        }
    }
}

У меня работает версия, поэтому прошу прощения за любые опечатки.

1 Ответ

5 голосов
/ 31 марта 2011

Логически вы бы отправили событие внутри вашего BasicView, прослушали его в своем основном приложении и создали бы кнопку оттуда. В мире префектов ООП каждый класс должен быть черным ящиком, отправляющим события:)

...