Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Динамическое создание кнопок. (http://www.flasher.ru/forum/showthread.php?t=134135)

Pushkash 22.12.2009 15:36

Динамическое создание кнопок.
 
Данные о кнопках подгружаются с сервера. Код:
Код AS3:

public function createButtons():void{                                
        var myButton:Button = new Button();                                       
        myButton.setStyle('upSkin',ButtonNormal);
        myButton.setStyle('overSkin',ButtonNormal);
        myButton.setStyle('downSkin',ButtonDown);
        var myUISprite:UISprite = new UISprite();
        field.rawChildren.addChild(myUISprite); // field - canvas
        myUISprite.addOnScreen(myButton);                       
}

Код класса UISprite:
Код AS3:

package ButtonsPanel
{       
        import flash.display.Sprite;       
        import mx.controls.Button;
        public class UISprite extends Sprite
        {
                private var sprite:Sprite;               
                public function UISprite(){
 
                }
 
                public function addOnScreen(s:Button):void{
                        sprite = s;                       
                        addChild(sprite);
                        trace('added');                       
                }               
        }
}

Экран остается стерильным.

Saulot 22.12.2009 17:15

Зачем myButton добавляется в спрайт? Он же наследуется от UIComponent.
Почему бы не так:
Код AS3:

 public function createButtons():void{                                
        var myButton:Button = new Button();                                       
        myButton.setStyle('upSkin',ButtonNormal);
        myButton.setStyle('overSkin',ButtonNormal);
        myButton.setStyle('downSkin',ButtonDown);
        var myHBox:HBox = new HBox();
        myHBox.addChild(myButton);
        field.addChild(myHBox);
}


Pushkash 23.12.2009 11:09

Простите, но вы сами то это пробовали компилировать? Результат такой же как и при:
field.rawChildren.addChild(myButton);

Saulot 23.12.2009 11:30

Пробовал. Результат нормальный, кнопка появляется,
а в чем у вас проблема из этого кода не разберешь.

Дайте полный код файла, попробуем разобраться.

Pushkash 23.12.2009 13:02

То что у вас все компилится, меня не мало насторожило. Пришлось взять букварь и прочитать таки сообщение об ошибки. Четко и ясно написано "невозможно преобразовать ButtonNormal@720fca1 в mx.core.IFlexDisplayObject."

Решение:
Код AS3:

       myButton.styleName = 'buttonStyle';
      field.addChild(myButton);
 
...
 
<mx:Style>
        .buttonStyle{
                upSkin:Embed(source='Assets/Buttons.swf',symbol='ButtonNormal');
                overSkin:Embed(source='Assets/Buttons.swf',symbol='ButtonNormal');
                downSkin:Embed(source='Assets/Buttons.swf',symbol='ButtonDown');
        }               
</mx:Style>

Буду дальше учиться читать :(


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

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