![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 25
|
Здравствуйте. Имеем одноколесный велосипед - состоит из сидушки и колеса. Колесо крутится при передвижении мыши как и сам велосипед целиком, только по горизонтали. Если есть препятствие на пути - велосипед его "переезжает" поднимаясь вверх на соответствующее расстояние, потом снова опускается. Реализовано с помощью hitTestObject()
var vr:Number=cycle.y; // запоминаем координату велосипеда по оси ОУ stage.addEventListener(Event.ENTER_FRAME,onFrameLoop); function onFrameLoop(evt:Event):void { cycle.x = mouseX; // велосипед по оси ОХ двигается за мышкой cycle.wheel.rotation = mouseX; // колесо велосипеда крутится от движения мышки if (cycle.hitTestObject(st)) // проверяем не столкнулся ли велосипед с объектом st, если да - "переезжаем" { cycle.y = vr-st.height ; } else { cycle.y = vr; } } Вопрос: Как реализовать сценарий, чтобы велосипед "переезжал" произвольное количество препятствий, а не конкретно вбитое. Спс |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 25
|
Спасибо за помощь
var obj1:Array= new Array(); // Тут будут хранится все объекты которые мы видим на сцене var obj2:Array= new Array(); // Тут только те, которые имеют класс Stone - это наши столбы, камни for (var i:int = 0; i< this.numChildren; i++) // Проходим все дочернии объекты, если встречается объект класса Stone - закидываем его в массив obj2 с которым и будем работать { obj1[i] = this.getChildAt(i); if (obj1[i] is Stone) { obj2.push(obj1[i]); } } var vr:Number = cycle.y; stage.addEventListener(Event.ENTER_FRAME,onFrameLoop); function onFrameLoop(evt:Event):void { cycle.x = mouseX; cycle.wheel.rotation = mouseX; for (var j:int = 0; j< obj2.length; j++){ if (cycle.hitTestObject(obj2[j])) { cycle.y = vr - obj2[j].height; break; } else { cycle.y = vr; } } } Цитата:
П.С. Да, это самый "прямой метод" над которым я и сначала думал, но... он очень ресурсозатратный, с каждым кадром нужно проходить цикл... Можно ли как то реализовать столкновение как тут cycle.hitTestObject(st), но не с конкретным объектом st , а с классом объектов, например с классом Stone ? |
|
|||||
|
Цитата:
|
|
|||||
|
а с классом объектов, например с классом Stone ?
Нет, класс - штука невидимая и неосязаемая. Проверять столкновения можно только с его экземплярами. Идея с массивом никуда не уходит, просто добавляйте в массив только те столбы, которые видны на экране, и убирайте те, которые скрыты.
__________________
тут я |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:46. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|