|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2010
Сообщений: 282
|
Взаимодействие объектов с разными классами
Всем привет,
Начал изучать классы. Есть объект "Enemy" в его классе прописано простейшее движение по X и есть несколько объектов с классом "Marker" при соприкосновении с которыми "Enemy" Должен менять свою скорость на противоположную. В классе Enemy пишу package { import flash.display.*; import flash.events.*; public class Enemy extends MovieClip { public var EnemySpeed:Number = 3; public function Enemy() { stage.addEventListener(Event.ENTER_FRAME, moveEnemy); } private function moveEnemy(event:Event) { //Код для изменения скорости(направления) движения if (this.hitTestObject(marker)){ EnemySpeed=-EnemySpeed; } this.x+=EnemySpeed; } } } |
|
|||||
Регистрация: Aug 2010
Сообщений: 282
|
marker - это просто объект с одноименным классом
Задача такая - на сцене объект с классом "Enemy" который должен двигаться между двумя объектами с классом "Marker" туда-сюда. |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Раз у вас marker нигде не инициализируется, видимо это класс, а не объект.
|
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Вот в том виде, что ты прислал эту строчку, этот код вообще не должен компилироваться. Ты что-то вырезал? Откуда берется marker? На него нет ни переменной в теле функции, ни свойства класса.
__ Аа. Ты туда, вместо ссылки на объект класса, пихаешь ссылку на сам класс. Гыгы, забавно.
__________________
мой пустой блог |
|
|||||
Регистрация: Aug 2010
Сообщений: 282
|
Еслиб это был объект с именем экземпляра "Marker" то код бы сработал. Просто не знаю как инициировать этот класс. Вопрос именно в том, как сделать чтоб "Enemy" реагировал на все объекты с классом "Marker"
|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
В цикле проматываете через все объекты типа Marker которые находятся на сцене и проверяете коллизию hitTestObject'ом.
А объекты типа Marker лучше инициализировать в контейнере который должен содержать и Enemy и Marker'ы, и проверять коллизию тоже там. В вашем случае это наверное мэйн класс. |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Чтобы класс Enemy реагировал на объекты Marker, нужно передать ему ссылку на этот самый объект. Передать в конструкторе и хранить в свойстве класса, еще как-нибудь.
Вообще, логичнее было бы даже, чтобы класс сцены хранил в себе все экземпляры Enemy и Marker и проверял их всех на столкновения. --- 2AlexLucas: дай пять =)
__________________
мой пустой блог |
|
|||||
Регистрация: Aug 2010
Сообщений: 282
|
А если объектов "Enemy" будет несколько и маркеров тоже несколько?
Не могу немного логику понять, мне массив объектов "Enemy" нужно делать + массив объектов "Маркер" а потом проверять каждый элемент одного массива на коллизию с каждым из элементов другого? Добавлено через 48 секунд Цитата:
Просто неохота заморачиваться с массивами и циклами |
Часовой пояс GMT +4, время: 09:53. |
|
« Предыдущая тема | Следующая тема » |
Теги |
взаимодействие классов |
|
|