Actionscript3: как я могу получить доступ к элементам на сцене из внешних классов? - PullRequest
2 голосов
/ 04 апреля 2009

У меня есть внешний класс в файле .as, моя проблема в том, что я не могу получить доступ к элементам на сцене. Код вроде stage.txtfield.text или this.parent.txtfield.text не работает. Поле txt - это имя динамического текстового поля.

Ответы [ 2 ]

6 голосов
/ 04 апреля 2009

Это немного зависит от внешнего класса.

Если он расширяет DisplayObject (или любого внука DisplayObject), вы сможете получить доступ к свойству stage, как только оно будет добавлено в список отображения (то есть когда оно добавлено на сцену или любой другой DisplayObjectContainer на дисплее список).

Для прослушивания этого используйте следующий код во внешнем классе:

addEventListener(Event.ADDED_TO_STAGE, AddedToStage);

//...

private function AddedToStage(e:Event):void
{
    trace("TextField text" + TextField(stage["textfield"]).text);
}

Если это не displayObject или если он не будет в списке отображения, лучше всего было бы разумно предоставить ему объекты, к которым он должен получить доступ (например, TextField), либо в конструкторе, либо в отдельном вызове метода. , Вы можете дать ему ссылку на саму стадию, но это не будет очень общим, если, например, вам нужен класс для манипулирования TextField внутри MovieClip.

Вы могли бы дать при ссылке на TextField с этим кодом:

//In any DisplayObject on the display list (could be inside a MovieClip or on the Stage itself)

var manipulator:MyClass = new MyClass(TextField(stage["textfield"]));

//In the external class

public class MyClass
{
    publich function MyClass(txt:TextField)
    {
        trace("TextField text" + txt.text);
    }
}

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

1 голос
/ 04 апреля 2009

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

Некоторые ссылки: http://www.kirupa.com/forum/showthread.php?p=1952513

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