Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Плавающие ошибки при отображении ComboBox (http://www.flasher.ru/forum/showthread.php?t=210061)

UginL7 21.01.2015 17:00

Плавающие ошибки при отображении ComboBox
 
В Flash CC2014 накидав в библиотеку нужные элементы собрал SWC. Затем подключил его к проекту в FlashDevelop. Набросал вот такой код
Код AS3:

package com.sydoruk
{
        import fl.controls.ComboBox;
        import fl.controls.ColorPicker;
        import flash.display.Sprite;
        import flash.events.Event;
 
        /**
        * ...
        * @author E.Sydoruk
        */

        public class Main extends Sprite
        {
                private var pCBox:ComboBox = new ComboBox();
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
 
                        this.pCBox.x = 20;
                        this.pCBox.y = 20;
                        this.pCBox.addItem( { label:"Test0", data:0} );
                        this.pCBox.addItem( { label:"Test1", data:1} );
                        this.pCBox.addItem( { label:"Test2", data:2} );
                        this.pCBox.addItem( { label:"Test3", data:3} );                       
                        this.pCBox.addItem( { label:"Test4", data:4} );
                        this.pCBox.addItem( { label:"Test5", data:5} );
                        this.pCBox.addItem( { label:"Test6", data:6} );
                        this.addChild(this.pCBox);
                }
 
        }
 
}

и периодически получаю вот такую ошибку
TypeError: Error #2007: Parameter child must be non-null.
at flash.display:: DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::BaseButton/draw()
at fl.core::UIComponent/drawNow()
at fl.controls::ComboBox/drawLayout()
at fl.controls::ComboBox/draw()
at fl.core::UIComponent/callLaterDispatcher()

TypeError: Error #2007: Parameter child must be non-null.
at flash.display:: DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::BaseButton/draw()
at fl.core::UIComponent/callLaterDispatcher()

Искал и на форуме и в гугле, но внятного ответа по решению так и ненашёл. Кто пишет, что будет исправлено в следующих версиях, кто пишет, что проблема ушла сама собой.
Очень надеюсь на конкретное решение.
Заранее благодарен!

ObOs 21.01.2015 17:11

Похоже что init срабатывает раньше чем переменной pCBox присваивается значение.
Попробуйте перенести создание экземпляра ComboBox в метод init
Код AS3:

package com.sydoruk
{
        import fl.controls.ComboBox;
        import fl.controls.ColorPicker;
        import flash.display.Sprite;
        import flash.events.Event;
 
        /**
        * ...
        * @author E.Sydoruk
        */

        public class Main extends Sprite
        {
                private var pCBox:ComboBox;
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
 
                        this.pCBox = new ComboBox();
 
                        this.pCBox.x = 20;
                        this.pCBox.y = 20;
                        this.pCBox.addItem( { label:"Test0", data:0} );
                        this.pCBox.addItem( { label:"Test1", data:1} );
                        this.pCBox.addItem( { label:"Test2", data:2} );
                        this.pCBox.addItem( { label:"Test3", data:3} );                       
                        this.pCBox.addItem( { label:"Test4", data:4} );
                        this.pCBox.addItem( { label:"Test5", data:5} );
                        this.pCBox.addItem( { label:"Test6", data:6} );
                        this.addChild(this.pCBox);
                }
 
        }
 
}


UginL7 21.01.2015 17:18

Пробовал, тоже самое (((

iiiusion 27.01.2015 20:12

такаяже беда с эти боксом. лечу перезапуском


Часовой пояс GMT +4, время: 04:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.