Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Однократный пересчет значения переменной (http://www.flasher.ru/forum/showthread.php?t=177453)

RhPlus 01.04.2012 15:02

Однократный пересчет значения переменной
 
у меня есть собственные обработчики следующих событий:
Код 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() вызовется только один раз, а мне нужно постоянно, пока мышь удерживается. Да, наверно можно засунуть множество проверок и булеву переменную, которая проверяла была ли нажата клавиша только что, но может быть есть способ проще?

-De- 01.04.2012 16:48

Хотите раз, есть mouseDown, хотите постоянно - mousePressed. Вы назвали ваши Input.mouseDown итд. событиями - это не так.

RhPlus 01.04.2012 17:08

извиняюсь, в моем случае это альтернативы мышиным событиям, которые не являются событиями. Вопрос был не о том ну да ладно - решение найдено. Спасибо.


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

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