Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   доступ к объекту в MovieClip (http://www.flasher.ru/forum/showthread.php?t=122560)

Tsaf 13.03.2009 16:27

доступ к объекту в MovieClip
 
Есть мувик movi, не могу достучатся к полю TextField кроме первого кадра
Код AS3:

   package app{
 
        import flash.display.*;
        import flash.text.TextField;
 
        public class Main extends MovieClip {
 
                public function Main(){ 
                  movi.gotoAndStop("f7");
                  movi.txt.text = "Hello!";   
                }
        }
}

Код:

    TypeError: Error #1009: Cannot access a property or method of a null object reference.
        at app::Main$iinit()

Что не так?

Arif flasher 13.03.2009 16:36

могу ошибаться, но не надо ли вместо "movi" писать "this". и связывать этот класс с обьектом "movi", на мейн таймлайне?

Tsaf 13.03.2009 17:13

Класс Main это Document class
на единственном кадре таймлайна лежит мувик с инстанс нейм movi

CrazyFlasher 13.03.2009 17:23

для начала зайдите в publish settings -> ActionScript 3 settings. Уберите там чекбокс "automatically declare stage instances".
Далее добавьте в Main.as
Код:

public var movi:MyMovieClip;
сделайте этот класс и привяжите в библиотеки его в объекту который у вас movi
Код:

package
{
        import flash.display.MovieClip;
        import flash.text.TextField;
       
        public class  MyMovieClip extends MovieClip
        {
                public var txt:TextField;
               
                public function MyMovieClip() {
                        super();
                }
        }
       
}

MyMovieClip замените на имя, которое характерно ему (для удобства)
если будете делать всегда (исключая редкие ньюансы), то никогда не запутаетесь. лично я за то, чтоб всё было по полочкам! :)

Arif flasher 13.03.2009 17:26

я скопировал твой код и все работает отлично.
Проверь:
обьект movi имеет instance name = "movi";
текст обьект внутри movi имеет instance name = "txt";
цвет текста не одинаковый с цветом фона (у меня было белое и сперва подумал не работает).
класс находится в папке app рядом с *.фла файлом
Код AS3:

package 
{
 
        import flash.display.*;
        import flash.text.TextField;
 
        public class Main extends MovieClip
        {
 
                public function Main()
                {
                        movi.gotoAndStop("f7");
                        movi.txt.text = "Hello!";
                }
        }
}

я просто сохранил файл *.ас рядом с *.фла поэтому убрал "апп" после Пэкедж.

Tsaf 13.03.2009 18:01

ничего не понимаю у меня никак не работает....всё та же ошибка

CrazyFlasher 13.03.2009 18:02

приаттачте исходник zip архивом

Tsaf 13.03.2009 18:17

Вложений: 1
:umnik2:

CrazyFlasher 13.03.2009 18:46

лучше не использовать фреймы ибо приходится применять темы типа этого
Код:

package app{
 
        import flash.display.MovieClip;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
 
        public class Main extends MovieClip {
                public var movi:MyMovieClip;
               
                private var initTimer:Timer;
               
                public function Main() {
                        initTimer = new Timer(25);
                        initTimer.addEventListener(TimerEvent.TIMER, onInitTimer);
                        initTimer.start();
                       
                        movi.gotoAndStop(2);
                }
               
                private function onInitTimer(e:TimerEvent):void
                {
                        if (!movi.txt) return;
                       
                        initTimer.reset();
                        initTimer.removeEventListener(TimerEvent.TIMER, onInitTimer);
                       
                        movi.txt.text = "Hello!"; 
                }
               
        }
}


BARTLEBY 13.03.2009 21:42

Вложений: 1
CrazyFlasher
что-то ты запутал и меня и человека сверху =)

в аттаче рабочий вариант.


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

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