Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.01.2010, 18:20
ashirk вне форума Посмотреть профиль Отправить личное сообщение для ashirk Найти все сообщения от ashirk
  № 1  
Ответить с цитированием
ashirk

Регистрация: Jan 2010
Сообщений: 7
По умолчанию Столкновение с объктами

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

Код 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("есть бонус");}
Иногда выходит, иногда нет. То есть бабочка ловит бонус - а сообщение не выходит.
И не знаю как удалить бонус при столкновении.

Старый 09.01.2010, 19:23
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 2  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Чтобы удалить бонус с экрана:
Код AS3:
removeChild(currbonus);
Чтобы удалить навсегда:
Код AS3:
removeChild(currbonus);
currbonus = null;
Если бонусов много, то их надо заносить в массив:
Код AS3:
massivBonusov.push(currbonus)
а затем проверять массив бонусов на столконовение
Код AS3:
for (var bonus in massivBonusov){
    if(man.hitTestObject(bonus)){
        trace(bonus);
    }
}


Последний раз редактировалось TWETTI; 09.01.2010 в 19:29.
Старый 09.01.2010, 20:59
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 3  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Цитата:
Сообщение от TWETTI Посмотреть сообщение
Чтобы удалить навсегда:
Код AS3:
removeChild(currbonus);
currbonus = null;
Не факт

Старый 10.01.2010, 12:08
ashirk вне форума Посмотреть профиль Отправить личное сообщение для ashirk Найти все сообщения от ashirk
  № 4  
Ответить с цитированием
ashirk

Регистрация: Jan 2010
Сообщений: 7
По умолчанию Объявление переменной

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

Код AS3:
var currbonus:DisplayObject;
Потому что при добалении в массив ругается:

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

Код:
var massivBonusov:Array = new Array();

Старый 10.01.2010, 12:12
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 5  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
ashirk
DisplayObject это абстрактный класс, и не возможно создать объекты этого класса, используйте Shape,Sprite или MovieClip


Последний раз редактировалось dex157; 10.01.2010 в 12:14.
Старый 10.01.2010, 12:15
ashirk вне форума Посмотреть профиль Отправить личное сообщение для ashirk Найти все сообщения от ashirk
  № 6  
Ответить с цитированием
ashirk

Регистрация: Jan 2010
Сообщений: 7
Спасибо!
Цитата:
Сообщение от dex157 Посмотреть сообщение
ashirk
DisplayObject это абстрактный у класс, у которого не может быть объектов, используй Shape,Sprite или MovieClip
Поставил класс "MovieClip" - нго все равно выдает ошибку при добавлении в массив

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

Старый 10.01.2010, 12:18
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 7  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
лучше shape..)

Старый 10.01.2010, 12:32
ashirk вне форума Посмотреть профиль Отправить личное сообщение для ashirk Найти все сообщения от ashirk
  № 8  
Ответить с цитированием
ashirk

Регистрация: Jan 2010
Сообщений: 7
Цитата:
Сообщение от dex157 Посмотреть сообщение
лучше shape..)
Я дико извиняюсь - глупые вопросы наверное задаю. Но опять не выходит:

Клип бонус имеет класс bonus и базовый класс flash.display.MovieClip
объявил переменную
Код AS3:
var currbonus:Shape =Shape();
и теперь он ругается:

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

Старый 10.01.2010, 12:40
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 9  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
тааак..) так вы делайте
Код AS3:
var currbonus:bonus = new bonus();
..) что то я путаюсь с утра..)

Старый 10.01.2010, 12:43
ashirk вне форума Посмотреть профиль Отправить личное сообщение для ashirk Найти все сообщения от ashirk
  № 10  
Ответить с цитированием
ashirk

Регистрация: Jan 2010
Сообщений: 7
Спасибо!
Правда не получилось - но по-моему понял в каком направлении двигаться

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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