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

mupsus_nika 24.11.2013 03:53

Проблема hitTestObject
 
Подскажет кто-то как убрать объекты. вызванные из библиотеки. со сцены при перемещении основной анимации на фрейм "гейм оувер"? Есть код и в объектах и на фрейме "game over". Думала поставить на фпейм с "г.о." ивент c removeChild но что-то не выходит, скорее всего не так пишу

Код AS3:

addEventListener(Event.REMOVED_FROM_STAGE, removes);
 
function removes(event:Event):void
{
                removeChild((Object(root).StarPOS));
                removeChild((Object(root).StarNEG));
                removeChild((Object(root).Star));
}

также пыталась сделать это через сам объект
Код AS3:

addEventListener(Event.REMOVED_FROM_STAGE, removem);
 
function removem(event:Event):void
{
if (Object(parent).currentFrame== "overgame")
        {
                Object(parent).removeChild(this);
        }
}




Следующая проблема уже имеет решение-
Добрый день, если не сложно, прошу подсказать решение проблемы в коде, пытаюсь сказать, чтоб при столкновении мувиклипов "b" и "hero" очки уменьшались на 100

Код AS3:

b.addEventListener(Event.ENTER_FRAME, hit);
{
        function hit(event:Event):void
        {
                if (this.hitTestObject(Object(root).hero))
                        {
                                trace ("hit")
                                Object(parent.parent).score -=  100;
                        var fl_SC2:SoundChannel;
                        var s2:Sound = new negat();
                        fl_SC2 = s2.play();
                        }
                }
        }

Код AS3:

TypeError: Error #2007: Parameter hitTestObject must be non-null.
        at flash.display::DisplayObject/_hitTest()
        at flash.display::DisplayObject/hitTestObject()
        at NEWproject5_fla::pinks_22/hit()[NEWproject5_fla.pinks_22::frame4:5]

вообще в задумке есть несколько идей не знаю как осуществимых, например при кодинге addchild я использовала генератор случайных чисел для времени добавления объектов, но при движении они наслаиваются на друг друга. Есть способ избегать их наслаивания?

решение- код объекта-исключения накладывался на код этой группы объектов. Я решила это образом вынесения объектов-исключений в свою собственную группу с одним исходным кодом.

Wolsh 24.11.2013 04:42

1. Что за скобка перед function hit? В коде так же? Что она открывает?
2. Сделайте внутри функции hit трейс перед условием: trace(Object(root).hero); — возможно нет у Мейна никакого херо.

mupsus_nika 24.11.2013 17:45

Wolsh, cпасибо за попытку к разбору, лишнюю скобку удалила, видимо, она вчера от недосыпа туда попала :)

проверила Вашим советом наличие "херо"- он на месте, при появлении "б" на сцене трейс "хит" активируется.

бросаю еще код родителя "б"-объект Стар, если вдруг будут вопросы, а по существу-


У объекта Стар есть 4 группы объектов (на 4 фреймах по объекту) в каждом из них по 5 объектов выбираемых случайно путем выбора случайного фрейма с этим объектом- 3 одинаковых объекта( они при попадании дают 5 очков)+ 1 объект дающий минус 100 очков и+ 1 объект дающий 20 очков. Так вот "б" соответственно объект исключение- то есть дающий -100 очков. Может подобрать какой-то другой способ для осуществления задуманного?

Код AS1/AS2:

 var nopeus = Math.random() * 5 + 1;
var randomframe:int = Math.random() * 3 + 1;
gotoAndStop(randomframe);
 
 
addEventListener(Event.ENTER_FRAME, liiku);
 
import com.greensock.*;
import com.greensock.easing.*;
TweenLite.to(this, 10, {x:480, y:250, rotation:30, ease:Quint.easeOut});
 
 
function liiku(event:Event):void
{
        //y+=nopeus
 
        if (this.hitTestObject(Object(root).hero))
        {
                if (this.currentFrame == Object(root).hero.currentFrame)
                {
                        //popadanie
 
                        Object(parent).score +=  5;
                        var fl_SC:SoundChannel;
                        var s:Sound = new posit();
                        fl_SC = s.play();
                                        }
                else
                {
                        //ne to popadanie
                        Object(parent).score -=  20;
                        var fl_SC2:SoundChannel;
                        var s2:Sound = new negat();
                        fl_SC2 = s2.play();
                }
                Object(parent).removeChild(this);
 
        }
        else if (y>300)
        {
                Object(parent).removeChild(this);
        }
}
 
addEventListener(Event.REMOVED_FROM_STAGE, remove);
 
function remove(event:Event):void
{
        removeEventListener(Event.ENTER_FRAME, liiku);
}

Добавлено через 31 час 14 минут
Друзья! Проблема решена, если у кого-то возникнет подобное-

код объекта-исключения накладывался на код этой группы объектов. Я решила это образом вынесения объектов-исключений в свою собственную группу с одним исходным кодом.


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

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