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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.04.2012, 15:02
RhPlus вне форума Посмотреть профиль Отправить личное сообщение для RhPlus Найти все сообщения от RhPlus
  № 1  
Ответить с цитированием
RhPlus
 
Аватар для RhPlus

Регистрация: Dec 2011
Адрес: Беларусь, г. Минск
Сообщений: 50
Отправить сообщение для RhPlus с помощью ICQ Отправить сообщение для RhPlus с помощью Skype™
По умолчанию Однократный пересчет значения переменной

у меня есть собственные обработчики следующих событий:
Код AS3:
Input.mouseDown     //отправляется каждый кадр пока мышь нажата
Input.mouseUp //отправляется каждый кадр пока мышь отпущена
Input.mousePressed  //отправляется один раз когда мышь фактически нажата
Input.mouseReleased //отправляется один раз когда мышь фактически отпущена
На сцене есть камера, ее координаты я могу определять и отслеживать с помощью статических Layout.camera.x и Layout.camera.y (camera - Point)

Как осуществляется управление камерой с помощью мыши:

Код AS3:
override public function renderFrame():void  {
	if (Input.mousePressed) 
        {
		Input.hideMouse(); //стат. работает как Mouse.hide()
		dWidth = Input.mouseX - Layout.camera.x; //определяет дельту (мышь.х - камера.х) для центрирования
		moveCameraWithMouse();
	}
        if (Input.mouseReleased) 
        {
		Input.showMouse();
	}
	super.renderFrame();
}
 
private function moveCameraWithMouse ():void {
	Layout.camera.x = Input.mouseX - dWidth; //то есть камера не центрируется на курсоре, а начинает просмотр именно с его позиции
}
Проблема в следующем: если я изначально вместо (Input.mousePressed) буду проверять (Input.mouseDown), то буду пересчитывать дельту (dWidth) каждый кадр, что не нужно, а поскольку я сейчас "вхожу" именно с ОДНОКРАТНЫМ нажатием, moveCameraWithMouse() вызовется только один раз, а мне нужно постоянно, пока мышь удерживается. Да, наверно можно засунуть множество проверок и булеву переменную, которая проверяла была ли нажата клавиша только что, но может быть есть способ проще?
__________________
с++, asm, as3


Последний раз редактировалось RhPlus; 01.04.2012 в 15:39.
Старый 01.04.2012, 16:48
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Хотите раз, есть mouseDown, хотите постоянно - mousePressed. Вы назвали ваши Input.mouseDown итд. событиями - это не так.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

Регистрация: Dec 2011
Адрес: Беларусь, г. Минск
Сообщений: 50
Отправить сообщение для RhPlus с помощью ICQ Отправить сообщение для RhPlus с помощью Skype™
извиняюсь, в моем случае это альтернативы мышиным событиям, которые не являются событиями. Вопрос был не о том ну да ладно - решение найдено. Спасибо.
__________________
с++, asm, as3

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

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

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


 


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


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