получить экранный объект на сцене / root? - PullRequest
0 голосов
/ 28 января 2011

как я могу получить экранный объект на stage / root из класса?

текстовое поле txt находится в корне, но как я могу получить его из класса?

var txt = new TextField();
with(txt){
    type = TextFieldType.INPUT;
    border = true;
    textColor = 0xffffff;
    multiline = true;
    x = 20;
    y = 20;
    width = 270;
    height = 40;
}
addChild(txt);
txt.name = 'test';

class classTest {
    public function classTest{
        trace(this.getChildByName('test'));
    }
}
var cls = new classTest();

Ответы [ 3 ]

1 голос
/ 28 января 2011

Не совсем точно, что вы делаете, но самым простым способом было бы проанализировать ссылку на root или объект DisplayObject, содержащий ваш объект Textfield, а затем получить доступ к объекту TextField через эту ссылку в вашем классе ClassTest.

var txt:TextField = new TextField();

with(txt)
{
     type = TextFieldType.INPUT;     
     border = true;
     textColor = 0xffffff;
     multiline = true;     
     x = 20;     
     y = 20;     
     width = 270;     
     height = 40; 
} 

addChild(txt); 
txt.name = 'test';  

class ClassTest 
{
     public function ClassTest(p_target:DisplayObjectContainer)
     {         
          trace(p_target.getChildByName("test"));  

     } // end function

}// end function

var classText:ClassText = new ClassTest(this); // parse a reference to root
0 голосов
/ 28 января 2011

(в новом файле класса)

import flash.display.Sprite;
import flash.events.Event;

public class classTest extends Sprite
{
    public function classTest
    {
        addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true);
    }

    private function added(evt:Event):void
    {
        trace(stage.getChildByName("test"));
    }
}

Event.ADDED_TO_STAGE позволит вам ссылаться на сцену, когда она срабатывает, что позволяет создать экземпляр класса и добавить его на сцену (поэтому событие должно сработать в первую очередь).

0 голосов
/ 28 января 2011

не уверен, правильно ли я вас понял. Но, если вы добавите имя к вашему экранному объекту, вы можете попробовать следующий код

txt.name = "txt_1";
this.getChildByName("txt_1");

UPDATE

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

class classTest {
    private var _r : MovieClip; //not sure about the type
    public function classTest(r:MovieClip){
        _r = r;
        trace(_r.getChildByName('test'));
    }
}
var cls = new classTest(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...