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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2008, 03:43
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 1  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
По умолчанию Остановка 3D объекта в сцене

Не могу разобратся с остановкой 3D объекта в сцене.
В общем сцена в которой всего 1-н кадр, на котором собственно расположен 3D Объект и две кноки, 1-я кнопка запускает вращение объекта по часовой стрелке, 2-я кнопка останавливает объект и он останавливается так как крутился, а не перепрыгивает в самое изначальное положение то есть на '0'.

Объект был создан в программе 3D Max, конвертирован в код AS, и создан как внешний файл, который подгружается в сцену...

Вот пример моего кода, нужно просто дописать вторую функцию, то есть для кнопки которая останавливает объект:

Код AS3:
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.
Старый 26.12.2008, 10:11
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Подозреваю что бы он остановился в нужном положении, можно просто удалить листенер
Код:
addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
hmBtnTwo.addEventListener( MouseEvent.MOUSE_DOWN, enterFrameHandlerStop );
private function enterFrameHandlerStop( event : Event ):void {
removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
}

Старый 26.12.2008, 13:47
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 3  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
Подозреваю что бы он остановился в нужном положении, можно просто удалить листенер
Код:
addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
hmBtnTwo.addEventListener( MouseEvent.MOUSE_DOWN, enterFrameHandlerStop );
private function enterFrameHandlerStop( event : Event ):void {
removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
}
Отлично, спасибо, всё работает
А как эти два действия на одну кнопку применить?
Знаю что с помощю условных операторов if... else..., но точно как не знаю

Код AS3:
// 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();
}
Может кто-то поможет написать if() {...} else() {...}?
Объект на сцене стоит на одном месте и присутствует всего одна кнока, нажимаю по этой кнопе он начинает крутится, нажимаю еще раз по ней он останавливается.


Последний раз редактировалось iNils; 26.12.2008 в 14:10.
Старый 26.12.2008, 14:11
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
root.Unknown, не надо злоупотреблять раскраской текста.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 26.12.2008, 14:16
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код:
private function rotateObj( event : MouseEvent ):void {
if (this.hasEventListener(Event.ENTER_FRAME))
	removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
else this.addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
}

Старый 26.12.2008, 14:55
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 6  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
Цитата:
Сообщение от iNils Посмотреть сообщение
root.Unknown, не надо злоупотреблять раскраской текста.
Хорошо, больше не буду

Alex Lexcuk что-то не работает, ошибки выскакивают...
Вот как я написал:

Код AS3:
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.
Старый 26.12.2008, 17:05
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 7  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код:
function rotateObj( event : MouseEvent ):void {
if (this.hasEventListener(Event.ENTER_FRAME))
	this.removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
else this.addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
}

Старый 26.12.2008, 17:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Вы бы лучше писали во внешнем классе, а не в кадрах. Да и редактор кода Flash IDE просто убожественен.

Старый 26.12.2008, 18:03
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 9  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
Так дело в том что я и пишу во внешнем класе
Не пойму в чем проблема...

Код AS3:
// кнопка расположеная на сцене с 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 минуты
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
Код:
function rotateObj( event : MouseEvent ):void {
if (this.hasEventListener(Event.ENTER_FRAME))
	this.removeEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
else this.addEventListener( Event.ENTER_FRAME, enterFrameHandlerPlay );
}
Огромнейшее тебе спасибо мен...
Это сработало, но все равно пришлось повозится немного, оказывается там надо было убрать "private" и за кнопкой hmBtn поставить символ "}", ну с кем не бывавает
Спасибо еще раз за то что помог с этой всёй бедой...

Старый 26.12.2008, 20:20
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Сообщение от root.Unknown
Так дело в том что я и пишу во внешнем класе
Цитата:
Сообщение от root.Unknown
там надо было убрать "private"
Гхм, Вы уверены в правильности обоих высказываний?

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

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

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


 


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


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