Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ошибка компиляции Error #1009 (http://www.flasher.ru/forum/showthread.php?t=212562)

Junge 13.03.2016 19:32

ошибка компиляции Error #1009
 
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Код AS1/AS2:

vse.dalee.addEventListener(MouseEvent.CLICK, f_dalee);
function f_dalee(event: MouseEvent): void {
 
        var i:int;
        for (i=0;i<3;i++){
                if (vse['r'+i].length < 2){                       
                    vse['alert'+i].alpha = 1;
                }else{
                        vse['alert'+i].alpha = 0;
                }
                if (r3 == null){
                        vse.alert3.alpha =1
                }else{
                        vse.alert3.alpha =0
                }
                if (vse['alert'+i].alpha == 0 && vse.alert3.alpha == 0){
                                vse.nextFrame();
                }
        }
 
}

//должен перейти в следующий кадр в мувике, но компилятор ругается что доступа к объекту r1 нет, но его и вправду в следующем кадре нет и там он мне не нужен

Добавлено через 26 минут
помогло добавление break после vse.nextFrame(); не знаю правда почему

caseyryan 13.03.2016 20:33

Это не ошибка компиляции, а рантайм ошибка (ошибка времени исполнения).
Ошибки компиляции возникают на этапе сборки, и препятствуют сборке проекта в принципе

undefined 13.03.2016 21:15

я так понял vse - это мувик?Тогда что должна значить такая строка
Цитата:

if (vse['r'+i].length < 2){
?
Вообще,jungle,убедительная просьба почитать хэлп особенно ту часть, где описаны что можно писать после точки для разных типов.В твоем предыдущем топике была такая запись:
Код AS3:

var i:int; 
for (i = 0; i < 10; i++){       
reginfo[i] = r+i.text;

ты объявляешь i как целочисленную переменную, но потом обращаешься к какому-то свойству text,которого у этого типа нет.

Junge 13.03.2016 22:19

if (vse['r'+i].length < 2){ здесь у нас текстовые поля в мувике vse под названиями r0 r1 r2, проверяется чтобы было от 2х символов введено в них, так и не понял как кроме length == 0 сделать проверку что , что-то введено, null undefined '' не прокатило.
во втором примере мне надо было не от i брать свойство а от r+i, не знал как записать

undefined 13.03.2016 22:34

Если требуется узнать введено ли что-либо в текстовом поле, то надо писать
Код AS3:

vse['r'+i].text.length


caseyryan 14.03.2016 07:32

Очень ненадежный способ проверки, который покажет, что что-то введено, даже если туда ввести пробел.
Вообще, лучше сразу вынести эту хрень в переменную
Код AS3:

 
var textField:TextField = vse['r'+i] as TextField; // не забыть импортировать flash.text.TextField;  вначале
if (textField.text.replace(/\s+/g, "").length > 0) { // регуляркой убираем пробелы, и проверяем есть ли что-то кроме них
    trace("Что-то введено");
}



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

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