Flash - текстовое поле не создано, нужен Eventlistener, чтобы сообщить мне, когда создается класс - PullRequest
1 голос
/ 21 апреля 2011

Я создаю игру во Flash, и у меня есть класс, в котором есть несколько текстовых полей, которые мне нужно заполнить в этом случае highScore. Я получаю эту ошибку.

Ошибка типа: ошибка # 1009: невозможно получить доступ к свойству или методу ссылки на пустой объект.

То есть, по какой-то причине объект не существует.

if (highscore.data.hard != null){ 
    highscore_txt.text= String( highscore.data.hard);. 
}

Файл highscore_txt, который я создал, в режиме конструктора, означающий временную шкалу.

У меня есть другое текстовое поле, которое мне нравится как счет, и у меня нет никаких проблем, это вероятно, потому что обработано, и я пытаюсь записать в текстовое поле в конструкторе класса. Я провел несколько тестов, и если я заполняю поле после того, как все вещи конструктора сделаны, это работает, например, когда я щелкаю в каком-то месте и вызываю эту функцию, используя список событий.

что я могу сделать, чтобы только после того, как класс был инициализирован, я вставил данные в текстовое поле, было ли какое-либо событие, которое прослушивается, когда класс сам себя создал? *

Ответы [ 4 ]

2 голосов
/ 21 апреля 2011

Вам следует использовать Debugger в Flash Builder (или другой IDE) и установить точку останова в первой строке вашего кода. Затем проверьте, если highscore не null, highscore.data тоже не null.

Или вы можете изменить свой код следующим образом:

if (highscore && highscore.data && highscore.data.hard)  
{ 
    highscore_txt.text= highscore.data.hard.toString(); 
}
1 голос
/ 21 апреля 2011

Просто поместите слушатель события в ваш конструктор, который слушает событие ADDED_TO_STAGE:)

addEventListener(Event.ADDED_TO_STAGE, yourFunctionToPopulate);

private function yourFunctionToPopulate(e:Event):void
{}
0 голосов
/ 22 апреля 2011

Создать переменную Bindable, используя аннотацию [Bindable].В вашем текстовом поле указывается привязываемая переменная, такая как ниже.

[Bindable]
var myBindableVar:String = "";
</script>

<mx:TextInput text="{myBindableVar}" />

Теперь, когда вы обновите var, значение вашего текстового поля будет автоматически обновлено.Вам нужно будет исправить синтаксис, но вы поняли идею?

0 голосов
/ 21 апреля 2011

Предполагая, что у вас есть текстовое поле highscore_txt в том же MovieClip, к которому прикреплен класс, и у вас есть:

public var highscore_txt : TextField;

где-то в классе, вы должны ждать Event.ADDED_TO_STAGE, прежде чем делать что-либо сэлементы.Вы можете прочитать обо всех событиях здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...