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

ashirk 09.01.2010 18:20

Столкновение с объктами
 
Добрый вечер!
Помогите, пожалуйста!
Делаю игрушку (бабочка летает, собирает бонусы, которые появляются по экрану).
Создаю объекты (бонус), создаются без проблем:

Код AS3:

  currbonus = new bonus();
  currbonus.x = Math.random() * (stage.stageWidth - currbonus.width+10);
  currbonus.y = Math.random() * (stage.stageHeight - currbonus.height+10);
addChild(currbonus);

хочу проверить условие столкновения (бабочка с бонусом)

Код AS3:

if (man.hitTestObject(currbonus))
        {trace("есть бонус");}

Иногда выходит, иногда нет. То есть бабочка ловит бонус - а сообщение не выходит.
И не знаю как удалить бонус при столкновении.

TWETTI 09.01.2010 19:23

Чтобы удалить бонус с экрана:
Код AS3:

removeChild(currbonus);

Чтобы удалить навсегда:
Код AS3:

removeChild(currbonus);
currbonus = null;

Если бонусов много, то их надо заносить в массив:
Код AS3:

massivBonusov.push(currbonus)

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

for (var bonus in massivBonusov){
    if(man.hitTestObject(bonus)){
        trace(bonus);
    }
}


Zik. 09.01.2010 20:59

Цитата:

Сообщение от TWETTI (Сообщение 877831)
Чтобы удалить навсегда:
Код AS3:

removeChild(currbonus);
currbonus = null;


Не факт

ashirk 10.01.2010 12:08

Объявление переменной
 
Спасибо за ответ!
Ещё встречный вопрос:
Правильно ли я объявил перемнную

Код AS3:

var currbonus:DisplayObject;

Потому что при добалении в массив ругается:

Код:

невозможно преобразовать 0 в flash.display.DisplayObject
Или это ругается изза объявления массива:

Код:

var massivBonusov:Array = new Array();

dex157 10.01.2010 12:12

ashirk
DisplayObject это абстрактный класс, и не возможно создать объекты этого класса, используйте Shape,Sprite или MovieClip

ashirk 10.01.2010 12:15

Спасибо!
Цитата:

Сообщение от dex157 (Сообщение 877941)
ashirk
DisplayObject это абстрактный у класс, у которого не может быть объектов, используй Shape,Sprite или MovieClip

Поставил класс "MovieClip" - нго все равно выдает ошибку при добавлении в массив

Код:

шибка типа Coercion: невозможно преобразовать 0 в flash.display.DisplayObject.

dex157 10.01.2010 12:18

лучше shape..)

ashirk 10.01.2010 12:32

Цитата:

Сообщение от dex157 (Сообщение 877943)
лучше shape..)

Я дико извиняюсь - глупые вопросы наверное задаю. Но опять не выходит:

Клип бонус имеет класс bonus и базовый класс flash.display.MovieClip
объявил переменную
Код AS3:

var currbonus:Shape =Shape();

и теперь он ругается:

Код:

1067: Неявное приведение значения типа bonus к несоответствующему типу flash.display:Shape.
Я новичок в AS3 (как и в предыдущих версиях)

dex157 10.01.2010 12:40

тааак..) так вы делайте
Код AS3:

var currbonus:bonus = new bonus();

..) что то я путаюсь с утра..)

ashirk 10.01.2010 12:43

Спасибо!
Правда не получилось - но по-моему понял в каком направлении двигаться :)


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

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