Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Доступ к текстовому полю внутри символа (http://www.flasher.ru/forum/showthread.php?t=154548)

yoman 19.04.2011 12:34

Доступ к текстовому полю внутри символа
 
В библиотеке есть символ Mouse_idle, внутри него текстовое поле dt, пытаюсь присвоить ему значение, но ничего не оторажается, странно FD при компиляции не выдает ошибок, ссылку на поле dt показывает, никак не пойму, что делаю не так :(

Вот код, все 100 работает кроме присвоение значения текстовому полю,
Заранее спасибо за помощь и советы.



Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        import flash.ui.Mouse;
 
 
        /**
        * ...
        * @author Yoman
        */

        [Frame(factoryClass="Preloader")]
        public class Main extends Sprite
        {
        private var _mouse:Mouse_idle;
 
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
 
                        removeEventListener(Event.ADDED_TO_STAGE, init);
 
 
                        // entry point
                    stage.showDefaultContextMenu = false;
                        Mouse.hide();
                  this._mouse = new Mouse_idle();
                  addChild (this._mouse);
              stage.addEventListener(MouseEvent.MOUSE_MOVE, this.mousemove);
 
                }
        private function mousemove (event:MouseEvent):void
                {
                        this._mouse.x = event.stageX;
                        this._mouse.y = event.stageY;
                        event.updateAfterEvent();
                        this._mouse.dt.text = ("sdfsdf");
                }
 
 
    }
 
}


Obi 19.04.2011 12:42

Ошибок не выдает, потому что вы не используете типизацию. Она, кстати, для того и придумана, чтобы избегать подобных ошибок.
Компилируется без ошибок, поскольку класс MovieClip динамический, следовательно, компилятор разрешит обращаться к любому, даже не существующему свойству.

Я бы написал вот так:

Код AS3:

private var _myTextField:TextField;
...
private function init(event:Event = null):void {
  ...
  this._mouse = new Mouse_idle();
  this._myTextField = this._mouse.getChildByName('textFieldName') as TextField;
  ...
}
 
private function mouseMove(event:MouseEvent):void {
  // тут у вас будет null Object reference
  this._myTextField.text = 'my super text';
}

UPD: Хотя, если вы из своего кода ничего не вырезали, а запускаете его как есть, то я не прав, и null object reference и так должен выскочить.
UPD2: Возможно у вас текстовое поле повернуто, или ему проставлена alpha? Если так, то текст может не отображаться, если шрифт не вшит во флешку.

yoman 19.04.2011 12:57

Спасибо огромное за быстрый ответ, все заработало, и все стало понятно :)

yoman 19.04.2011 13:12

UPD >> Да запускал как здесь выложено
UPD >> Поле не повернуто и не прозрачно, шрифт вшит (яя на эту граблю давно наступал)


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

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