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

kluv666 11.11.2010 11:35

Термин не определен и не имеет свойств
 
Есть мувик, с классом ниже, в мувике есть динамическое текстовое поле txt

при присвоении:
this.txt.text = "Loading..." ругается, в чем может быть проблема?


Код AS3:

package main {
        import flash.display.MovieClip;
        import flash.events.*;
 
        dynamic public class Preloader extends MovieClip {
                public function Preloader() {
                        // Нужно периодически вызывать функцию Update, которая будет обновлять процент загрузки
                        // Используем старый-добрый onEnterFrame с учетом событий AS3
                        addEventListener(Event.ENTER_FRAME, Update);
                }
 
                public function Update(e : Event):void {
                        var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
                        var bytesTotal:Number = stage.loaderInfo.bytesTotal;
                        var s:String = "";
                        var percent:Number = 0;
                        if (bytesTotal>0){
                                percent = Math.floor(bytesLoaded/bytesTotal*100);
                                s = percent+"% ("+
                                Math.round(bytesLoaded/1024)+"kb / "+
                                Math.round(bytesTotal/1024)+"kb)";
                        }
<b>                        this.txt.text="Loading... "+s;
                        this.progressbar_mc.gotoAndStop(percent+1);b>
                        // Если полностью загрузились, то переходим на второй кадр
                        if (bytesLoaded==bytesTotal || bytesTotal==0){
                                removeEventListener(Event.ENTER_FRAME, Update);
                                play();
                        }
                }
 
        }
}


TanaTiX 11.11.2010 11:46

Вам говорят, что txt отсутствует.

kluv666 11.11.2010 11:47

txt присутствует )

TanaTiX 11.11.2010 11:48

Для вас может и присутствует, а для компилятора - нет.
Где у вас объявление переменной?

kluv666 11.11.2010 11:53

Цитата:

Сообщение от TanaTiX (Сообщение 948997)
Для вас может и присутствует, а для компилятора - нет.
Где у вас объявление переменной?

возможно, я новичек, а что динамический текст в коде надо еще в переменную загонять? )

у менять просто динамик текст в мувике обозван как txt и все.

а на мувике в линк на main.Preloader (код выше)

TanaTiX 11.11.2010 12:10

Если у вас на сцене лежит текстовое поле с инстансным именем txt, то для ее корректного "распознавания" ее необходимо объявить:
Код AS3:

public var txt:TextField;


kluv666 11.11.2010 12:17

Цитата:

Сообщение от TanaTiX (Сообщение 949003)
Если у вас на сцене лежит текстовое поле с инстансным именем txt, то для ее корректного "распознавания" ее необходимо объявить:
Код AS3:

public var txt:TextField;


объявляюю public var txt:TextField;

Код AS3:

        dynamic public class Preloader extends MovieClip {
                public var txt:TextField;

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

если внутри фунции Update :
var txt:TextField;

то "Термин не определен и не имеет свойств" (

Добавлено через 3 минуты
причем есть рабочий исходник того что я пишу, там все также, но работает )) видать есть косяк про который я незнаю и он 100% не в коде (

TanaTiX 11.11.2010 12:25

Во-первых, нужно не забывать импортировать используемые классы, во-вторых, не забывать добавлять событие добавление экземпляра класса на сцену (ADDED_TO_STAGE)
Если не поможет - можно и исходник показать.

kluv666 11.11.2010 12:34

весь исходник выше, больше кода нет, исходник флеша прост мувик в нем символ (фрагмент мувика) в нем поле txt динамический текст, на мувике в линке прописан класс main.Preloader (код выше).

bav 11.11.2010 12:51

Смоделировал вашу ситуацию. Вот что получается:
Код AS3:

public function Update(e : Event):void {
    trace(">>> " + txt);
    trace(">>> " + stage);
    var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
    var bytesTotal:Number = stage.loaderInfo.bytesTotal;
 
    // output:
    // >>> [object TextField]
    // >>> null

Он у вас stage не видит, а не txt.


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

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