![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2011
Сообщений: 10
|
Как осуществить столкновение так, чтобы на сцене могло быть больше одного элемента каждого класса?
function addAsteroid(e:TimerEvent):void { var asteroid:Asteroid = new Asteroid(); asteroid.x= Math.random()*807; asteroid.y= 0; addChild(asteroid); } function addBullet(e:MouseEvent ):void { var bullet:Bullet = new Bullet(); bullet.x = ship.x; bullet.y = ship.y; addChild(bullet); } if (bullet.hitTestObject(asteroid)) //Обращение несуществующего свойства bullet //Обращение несуществующего свойства asteroid { removeChild(bullet); //Обращение несуществующего свойства bullet removeChild(asteroid); //Обращение несуществующего свойства asteroid } |
|
|||||
|
Вы переменные создаете внутри функций и не передаете на них ссылки никуда. Соотвествено они видны только в функциях. Либо передавайте ссылки либо создавайте переменные вне функций
__________________
return this... |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 10
|
AlexCooper, если создавать переменные вне функций, то на сцене могут присутствовать только по одному элементу каждого класса, а насчет передачи ссылок, я не понимаю как это делать, не могли бы вы объяснить немного)
|
|
|||||
|
Это просто. Создаете к примеру массивы вне функций
private var allBullet:Vector.<Bullet> = new Vector.<Bullet>; private var allAsteroid:Vector.<Asteroid> = new Vector.<Asteroid>; function addAsteroid(e:TimerEvent):void { var asteroid:Asteroid = new Asteroid(); asteroid.x= Math.random()*807; asteroid.y= 0; addChild(asteroid); allAsteroid.push(asteroid); } function addBullet(e:MouseEvent ):void { var bullet:Bullet = new Bullet(); bullet.x = ship.x; bullet.y = ship.y; addChild(bullet); allBullet.push(bullet); } var bullet:Bullet; var aster:Asteroid; for (var bullet_id:uint in allBullet) { for (var asteroid_id:uint in allAsteroid) { bullet = allBullet[bullet_id]; asteroid= allAsteroid[asteroid_id]; if (bullet.hitTestObject(asteroid)) { removeChild(bullet); removeChild(asteroid); delete allBullet[bullet_id]; delete allAsteroid[asteroid_id]; } } }
__________________
return this... |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 10
|
Пишет ошибку "Неявное приведение значения типа String к несоответствующему типу uint." в циклах.
Если вместо uint прописать String, то столкновения не происходит( |
|
|||||
|
хм... всё верно, пропишите стринг. Попробуйте протрейсить
Добавлено через 5 минут
Лучше конечно выгрузите исходники, подкорректирую. Будет быстрей всего. Если не для всеобщего в скайп: alexscript или icq: 71-000-95
__________________
return this... |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 10
|
Вот исходники
|
|
|||||
|
Регистрация: Aug 2011
Сообщений: 10
|
Спасибо)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:56. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| столкновение |
|
|