Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему не работает hitTestObject (http://www.flasher.ru/forum/showthread.php?t=151481)

Kadmus 28.02.2011 17:42

Почему не работает hitTestObject
 
Подскажитеему, почему не работает следующий код:
Код AS3:

stop();
//--------------------------------
var MyBasicElement:Array = [];
var MyLevel:Array = [];
 
for(var i=0;i<5;i++)
{
        MyLevel[i] = new CLevel();
        addChild(MyLevel[i]);
}
 
for(var j=0;j<5;j++)
{
        MyBasicElement[i] = new CBasicElement(MyQuest.Text_txt[MyQuest.Qindex]);
        addChild(MyBasicElement[i]);
}
 
stage.addEventListener(MouseEvent.MOUSE_UP,hitConect);
function hitConect(e:Event):void
{
        for(i=0;i<5;i++)
        {
                for(j=0;j<5;j++)
                {
                        if(MyBasicElement[i].hitTestObject(MyLevel[j]) == true) trace("211241");
                }
        }
}

Выдает следующую ошибку:
TypeError: Error #1010: Термин не определен и не имеет свойств.
at Haffman_fla::MainTimeline/hitConect()

Волгоградец 28.02.2011 17:48

Ошибка во втором цикле for - в MyBasicElement нужно указывать j, а не i.

upd.: ну и конечно же я должен еще написать что в AS не принято массивы назвать с большой буквы.

Kadmus 28.02.2011 17:51

Проблема осталась таже(

Волгоградец 28.02.2011 17:57

Напиши полный текст ошибки.

Kadmus 28.02.2011 17:58

Это полный текст

cleptoman 28.02.2011 18:01

у вас в hitConect не объявлены ни i ни j

Волгоградец 28.02.2011 18:02

Эмммм... Второй цикл должен быть такой:
Код AS3:

for(var j=0;j<5;j++)
{
        MyBasicElement[<b>jb>] = new CBasicElement(MyQuest.Text_txt[MyQuest.Qindex]);
        addChild(MyBasicElement[<b>jb>]);
}

Я даже проверил - работает.

cleptoman, код в одной области видимости - даже ворнинг выкенет, если объявить i и j еще раз...

p.s.: что за фигня - тэги форматирования не работают.

Kadmus 28.02.2011 18:11

тьфу, сори не увидел. Ошибка исчезла, но чесно говоря всеравно trace не срабатывает

Волгоградец 28.02.2011 18:18

trace не срабатывает потому что ошибка в логике - не срабатывает условие, т.е. объекты не пересекаются.

Kadmus 28.02.2011 18:27

Всё, я исправил, спасибо. Но теперь мне нужно вместо trace использовать метод класса СBasicElement. Сново пишет ошибку:
ReferenceError: Error #1069: Не удалось найти свойство NO_HIT в CBasicElement; отсутствует значение по умолчанию.
at Haffman_fla::MainTimeline/hitConect()

Вот код с хитТестом:
Код AS3:

stage.addEventListener(MouseEvent.MOUSE_UP,hitConect);
function hitConect(e:Event):void
{
        for(i=0;i<5;i++)
        {
                for(j=0;j<5;j++)
                {
                        if(MyBasicElement[i].hitTestObject(MyLevel[j]) == true) MyBasicElement[i].HIT();
                        else MyBasicElement[i].NO_HIT();
                }
        }
}

Добавлено через 6 минут
))) И это исправил, как ни странно появилась еще одна проблема. При срабатывании хитТеста для одного элемента, он автоматом срабатывает 25 раз.


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

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