![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2008
Сообщений: 20
|
Не могу разобратся с остановкой 3D объекта в сцене.
В общем сцена в которой всего 1-н кадр, на котором собственно расположен 3D Объект и две кноки, 1-я кнопка запускает вращение объекта по часовой стрелке, 2-я кнопка останавливает объект и он останавливается так как крутился, а не перепрыгивает в самое изначальное положение то есть на '0'. Объект был создан в программе 3D Max, конвертирован в код AS, и создан как внешний файл, который подгружается в сцену... Вот пример моего кода, нужно просто дописать вторую функцию, то есть для кнопки которая останавливает объект: var pot; // 3D Объект /* Первая кнопка с ID: hmBtn расположена в сцене */ hmBtn.addEventListener( MouseEvent.MOUSE_DOWN, rotateObj); function rotateObj( event : Event ):void { addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); } private function enterFrameHandlerPlay( event : Event ):void { pot.pan +=2; scene.render(); } /* Вторая кнопка с ID: hmBtnTwo расположена в сцене */ hmBtnTwo.addEventListener( MouseEvent.MOUSE_DOWN, enterFrameHandlerStop ); private function enterFrameHandlerStop( event : Event ):void { pot. <- ????????????????????????????????????????????????? scene.render(); } Как можно остановить 3D объект? Вот он крутится и только нажму по кнопке он сразу остановится в том же месте в которое перекрутился. Может есть способ еще проще написать функции для воспроизведения и остановки 3д объекта, подскажите... Задолбался лазить по Adobe Flash Help-у... ![]() ![]() Последний раз редактировалось iNils; 26.12.2008 в 14:10. |
|
|||||
|
Подозреваю что бы он остановился в нужном положении, можно просто удалить листенер
|
|
|||||
|
Регистрация: Dec 2008
Сообщений: 20
|
Цитата:
![]() А как эти два действия на одну кнопку применить? Знаю что с помощю условных операторов if... else..., но точно как не знаю ![]() // 1-я кнопка hmBtn.addEventListener( MouseEvent.MOUSE_DOWN, rotateObj); function rotateObj( event : Event ):void { addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); } // 2-я кнопка hmBtnTwo.addEventListener( MouseEvent.MOUSE_DOWN, enterFrameHandlerStop ); } // функция для вращения объекта - 1-я кнопка private function enterFrameHandlerPlay( event : Event ):void { pot.pan +=2; scene.render(); } // фугкция для остановки объекта - 2-я кнопка private function enterFrameHandlerStop( event : Event ):void { removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); scene.render(); } ![]() Объект на сцене стоит на одном месте и присутствует всего одна кнока, нажимаю по этой кнопе он начинает крутится, нажимаю еще раз по ней он останавливается. Последний раз редактировалось iNils; 26.12.2008 в 14:10. |
|
|||||
|
|
|
|||||
|
Регистрация: Dec 2008
Сообщений: 20
|
Хорошо, больше не буду
![]() Alex Lexcuk что-то не работает, ошибки выскакивают... Вот как я написал: hmBtn.addEventListener( MouseEvent.MOUSE_DOWN, rotateObj); private function rotateObj( event : MouseEvent ):void { if (this.hasEventListener(Event.ENTER_FRAME)) removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); else this.addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); } private function enterFrameHandlerPlay( event : Event ):void { pot.pan +=2; scene.render(); } 1-я в строке private function rotateObj( event : MouseEvent ):void { Описание: 1013: The private attribute may be used only on class property definitions. 2-я в строке private function enterFrameHandlerPlay( event : Event ):void { Описание: 1013: The private attribute may be used only on class property definitions. Последний раз редактировалось root.Unknown; 26.12.2008 в 15:00. |
|
|||||
|
|
|
|||||
|
Вы бы лучше писали во внешнем классе, а не в кадрах. Да и редактор кода Flash IDE просто убожественен.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 20
|
Так дело в том что я и пишу во внешнем класе
![]() Не пойму в чем проблема... // кнопка расположеная на сцене с ID: hmBtn, она вызывает функцию rotateObj, которая запускает или останавливает объект. hmBtn.addEventListener( MouseEvent.MOUSE_DOWN, rotateObj); private function rotateObj( event : MouseEvent ):void { if (this.hasEventListener(Event.ENTER_FRAME)) // Если объект вращаеться removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); // его нужно остановить else this.addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay ); // Если объект остановлен, он начинает вращаться } // Функция которая заставляет вращатся объет бесконечное число раз по +2 private function enterFrameHandlerPlay( event : Event ):void { pot.pan +=2; scene.render(); } Добавлено через 22 минуты Цитата:
![]() ![]() ![]() Это сработало, но все равно пришлось повозится немного, оказывается там надо было убрать "private" и за кнопкой hmBtn поставить символ "}", ну с кем не бывавает Спасибо еще раз за то что помог с этой всёй бедой... ![]() |
|
|||||
|
Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|