Flash Builder 4: ошибка № 1009 при переносе кнопки в BorderContainer - PullRequest
1 голос
/ 07 сентября 2010

Это действительно беспокоит меня, но у меня есть компонент, в котором Button обернут в BorderContainer.Я передаю пользовательское свойство компоненту во время выполнения, чтобы изменить метку кнопки, но Flex сообщает о следующей ошибке:

Cannot access a property or method of a null object reference

При возникновении ошибки Flex выделяет следующий код:

myButton.label = value;

Вот приложение:

// MyApp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       xmlns:local="*">
    <local:MyComp id="myButton" label="My Button"/>
</s:WindowedApplication>

// MyComp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                   width="400" height="300">
    <fx:Script>
        <![CDATA[
            private var _label:String;

            public function get label():String
            {
                return _label;
            }

            public function set label(value:String):void
            {
                _label = value;
                myButton.label = value;
            }
        ]]>
    </fx:Script>
    <s:Button id="myButton" label="Test"/>
</s:BorderContainer>

Любая помощь будет принята с благодарностью.Заранее спасибо.

1 Ответ

0 голосов
/ 07 сентября 2010

Объект myButton еще не создан, если в первый раз вызывается функция установки для свойства label. Присвойте новое значение метки myButton.label в commitProperties().

Вы должны прочитать О создании расширенных компонентов (прежде всего "О жизненном цикле создания компонентов" ), чтобы понять почему.

...