Форум 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=197173)

Fogflasher 03.04.2013 15:30

Таймер внутри Мувиклипа.
 
Создаю код для таймера внутри мувиклипа с именем экземпляра stamina1_mc.

Фрагмент выглядит так:

Код AS3:

 
var _root = MovieClip(root);
var counter_f:int = _root.f;                                        //читаем значение внешней переменной
 
var Flowtimer:Timer = new Timer(1000, counter_f);        //1-second timer init
 
Flowtimer.addEventListener(TimerEvent.TIMER, flowbar)//задаем функцию события
 
Flowtimer.start();                                              //запускаем таймер
 
function flowbar(e:TimerEvent):void
{
// здесь код функции
}

Но при запуске выдается вот такая ошибка:

Код:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
        at Progressbar_fla::stamina_mc_6/flowbar()
        at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
        at flash.utils::Timer/flash.utils:Timer::tick()


Что делать, как разрулить проблему?

Hauts 03.04.2013 15:32

У вас, похоже, ошибка в том месте, где написано "// здесь код функции"

Fogflasher 03.04.2013 16:02

Цитата:

Сообщение от Hauts (Сообщение 1128067)
У вас, похоже, ошибка в том месте, где написано "// здесь код функции"

Да, действительно!
Я, в прошлом примере, для простоты кода опустил еще вот такие строки:

Код AS3:

var j:uint = 0;
var ind2:MovieClip = parent.getChildByName("indicator2_dtx") as MovieClip;
var ind3:MovieClip = parent.getChildByName("indicator3_dtx") as MovieClip;
 
//... здесь идет код указанный в прошлый раз, а вот функция:
 
function flowbar(e:TimerEvent):void
{
 
 
                if (counter_f <= 100)
                {
 
//                            ind2.text = String(counter_k) + "%";    //ВЫЗЫВАЕТ ОШИБКУ
//                        ind3.text = String(j) + "%";                //ВЫЗЫВАЕТ ОШИБКУ
 
                        this.gotoAndStop(counter_k + j);
 
                        j++;
 
                        trace("j++ ", j);
                        trace("counter_f ", counter_f);
 
 
 
                }
        else
                {
                        counter_k = 100;
                        this.gotoAndStop(counter_k);
//                        ind2.text = String(counter_k) + "%";  //ВЫЗЫВАЕТ ОШИБКУ
                        trace("Limit!");
                }               
 
 
 
}

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

Хотя, я вообще не очень догоняю эту технику обращения к внешим объектам через такой слишком закрученный getChildbyName метод...
Должно же быть что-то проще (ладно об этом наверное лучше в отдельном посте спросить).

Причем, нет бы написать что проблема в этих полях, но идет указание на параметры таймера, который оказывается вообще не причем.

Добавлено через 28 минут
Блин, я все понял. Это же переменные типа TextField, а не MovieClip... Ой дурак.
Исправил, теперь эти строки не глючат.

Hauts, спасибо за помощь.


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

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