Форум 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=169917)

miki 14.10.2011 16:19

Свой компонент не работает
 
Вложений: 1
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx">
        <fx:Script>
                <![CDATA[
                        public var _a:String = "default";
                        public var _b:String = "default";
 
                        public function get a():String
                        {
                                return _a;
                        }               
                        public function set a( newValue:String ):void
                        {
                                if (savebtn) savebtn.label = newValue;
                                trace(newValue);
                                trace(this.savebtn);
                        }
                        public function get b():String
                        {
                                return _a;
                        }                               
                        public function set b( newValue:String ):void
                        {
                                if (loadbtn) loadbtn.label = newValue;
                                trace(newValue);
                                trace(this.loadbtn);
                        }                       
                ]]>
        </fx:Script>
        <mx:Button id="savebtn" label="{a}" />
        <mx:Button id="loadbtn" label="{b}" />       
</mx:HBox>

Код AS3:

<?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="955" minHeight="600"
                          xmlns:local="*">
        <local:LastWinner id="my" a="Load" b="Save" />
        <mx:Button x="10" y="30" label="Click" click="my.b = 'new'" />
</s:Application>

Почему кнопки не меняют label на Load и Save ?

Astraport 14.10.2011 16:27

Код AS3:

[Bindable] public var _a:String = "default";
[Bindable] public var _b:String = "default";


miki 14.10.2011 16:41

Не помогло. Я для того поставил методы set и get.
Вот что еще странно, если запустить код который я дал ( без [Bindable] )
то выводится
Код:

Load
null
Save
null

Почему сеттеры срабатывают, а savebtn и loadbtn не видно?

GBee 14.10.2011 16:48

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

Забиндиться можно и на геттер и на приватную переменную
Если на геттер, то [Bindable] пропишите перед каждым геттером

Если, как указал Астрапорт (на приватные), то поправьте ошибку и
Код AS3:

<mx:Button id="savebtn" label="{_a}" />
<mx:Button id="loadbtn" label="{_b}" />

Добавлено через 2 минуты
Ой не досмотрел код, у вас вообще каша.

Код AS3:

if (savebtn) savebtn.label = newValue;

выкидывайте и оставляете Биндинг,

либо оставляйте как есть и убирайте биндинг, каждую кнопку подпишите на creationComplete и там им указывайте метки.


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

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