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

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

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

Регистрация: Feb 2012
Сообщений: 16
По умолчанию Как реализовать взрыв и удаления корабля?

Добрый вечер! Я создаю игру на Flash. Мне нужно, чтобы при попадании в корабль проигрывалась анимация взрыва, а затем он удалялся со сцены. Я пытаюсь это сделать так:
Вставил в класс корабля

Код AS3:
static public const REMOVE_ME:String = "removeMe"
В последний кадр анимации взрыва корабля:
Код AS3:
 
import flash.events.Event
dispatchEvent(new Event(REMOVE_ME, true));

В классе игры:
Код AS3:
public function moveBullets():void
      {
               for (var i2:int; i2 < enemyArr.length; i2++ )
         {
            if (enemyArr[i2].health <= 0)
                  {
 
                     enemyArr[i2].gotoAndPlay("boom")
 
 
 
                     addEventListener(enemyArr[i2].REMOVE_ME, removeMe);
 
 
 
 
                     if (enemyArr.length == 0)
                     {
                        nextLevel();
 
                     }
                  }
         }
 
      }
      private function removeMe():void
         {
            removeChild(enemyArr[i2])
            enemyArr.splice(i2, 1)
         }
Я немного запутался и не понял, что именно должна принимать removeMe в моем случае, но мне нужно унаследовать i2. И при компиляции выдает: Error #1069: Не удалось найти свойство REMOVE_ME в AS.Game.Enemies.EnemyEasy; отсутствует значение по умолчанию, хотя вроде REMOVE_ME в этом классе есть. Подскажите, пожалуйста, как это можно исправить?


Последний раз редактировалось DeNCHiK01; 29.02.2012 в 22:00.
Старый 29.02.2012, 22:02
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Несколько исправлений.

Код AS3:
dispatchEvent(new Event(EnemyEasy.REMOVE_ME, true));
Код AS3:
enemyArr[i2].addEventListener(EnemyEasy.REMOVE_ME, removeMe);
Код AS3:
private function removeMe(event:Event):void
{
    var target:EnemyEasy = event.target as EnemyEasy;
    var index:int = enemyArr.indexOf(target);
    if (contains(target)) removeChild(target);
    enemyArr.splice(index, 1);
}
На будущее рекомендую указывать название класса, которому принадлежит участок кода.
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 01.03.2012 в 01:07.
Старый 29.02.2012, 22:09
DeNCHiK01 вне форума Посмотреть профиль Отправить личное сообщение для DeNCHiK01 Найти все сообщения от DeNCHiK01
  № 3  
Ответить с цитированием
DeNCHiK01

Регистрация: Feb 2012
Сообщений: 16
Спасибо за помощь, но выдал 1180: Вызов предположительно неопределенного метода contents.

Участок кода принадлежит классу EnemyEasy


Последний раз редактировалось mooncar; 29.02.2012 в 22:56.
Старый 29.02.2012, 22:35
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
if (/*здесь была опечатка*/contains(target)) 
    removeChild(target);
Но как мы знаем, contains определит всех детей, внуков, правнуков и пр. Идеологически не совсем верно так удалять.
Заменим.
Код AS3:
if (target.parent === this)
    removeChild(target);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 29.02.2012 в 22:38.
Старый 29.02.2012, 23:08
DeNCHiK01 вне форума Посмотреть профиль Отправить личное сообщение для DeNCHiK01 Найти все сообщения от DeNCHiK01
  № 5  
Ответить с цитированием
DeNCHiK01

Регистрация: Feb 2012
Сообщений: 16
Спасибо, все получилось!

Старый 01.03.2012, 01:07
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
dimarik, совершенно верно. Опечатку исправил, с замечанием согласен.
DeNCHiK01, приношу извинения за опечатку )
__________________
Поймай яблоко 2!

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

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

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


 


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


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