Проблема с setCursorPos во Flash - Away3D

Я делаю шутер от первого лица для Flash в Away3D, но кажется, что setCursorPos не работает должным образом. Когда я вызываю setCursorPos, курсор перемещается в центр экрана, но также вызывает событие MOUSE_MOVE. Это ожидаемое поведение? Как узнать, когда событие MOUSE_MOVE вызвано вызовом setCursorPos; или это вызвано фактическим движением мыши? Вот пример кода того, что я пытаюсь сделать:

private function onMove(evt:MouseEvent):void {
if (prevY == 0) {
                    prevY = evt.stageY;
                    prevX = evt.stageX;
                }
                    mainView.camera.rotate(Vector3D.X_AXIS,evt.stageY - prevY);

                }
            }
            //This triggers a MOUSE_MOVE event, causing this function to be called again.
                nativeInterface.setCursorPos(nativeInterface.screenResolution[0] / 2, nativeInterface.screenResolution[1] / 2);
}

person bbosak    schedule 09.01.2011    source источник


Ответы (1)


Я не знаком с nativeInterface и setCursorPos. Не могли бы вы дать еще несколько деталей? Это Away3D или Away3DLite?

Первое, что приходит на ум, чтобы разделить их, — это проверка eventPhase и выполнение оператора if на основе этого, если eventPhase отличается в зависимости от того, когда/что запускает событие.

ХТН

person George Profenza    schedule 10.01.2011
comment
Это Away3D (не Away3D lite). Я использую самое последнее обновление SVN. - person bbosak; 10.01.2011
comment
@IDWMaster Если вы используете образец, не могли бы вы опубликовать ссылку на него или опубликовать базовый класс документа, который я мог бы легко протестировать / отладить? - person George Profenza; 10.01.2011
comment
Класс nativeInterface — это подключаемый модуль, загруженный в галерею подключаемых модулей социальных сетей: http://elcnet.servehttp.com/startcontent/plugins.aspx Плагин что-то изменяет в поведении проигрывателя Flash, и я не совсем понимаю, как он работает и где взять исходный код. - person bbosak; 11.01.2011
comment
Установщик также по какой-то причине запросил путь установки для моего каталога Flex IDE. Это плагин, который позволяет получить доступ к собственным функциям операционной системы из Flash Player. Плагин также должен быть установлен конечными пользователями для воспроизведения таких Flash-видео. - person bbosak; 11.01.2011
comment
@IDWMaster Извините, но я не знаком с этой IDW. Насколько я могу судить, эта библиотека имеет более низкий уровень доступа к системе и имеет собственный контроль над позицией курсора? Я нахожу это немного странным. То, как вы это описываете, звучит как плагин для браузера, который упаковывает файлы swf и имеет API для связи swf/plugin. Люди действительно устанавливают этот плагин? Плагин запускает плагин? Для шутера от 1-го лица, почему бы не использовать что-то вроде Unity с его WebPlayer, пока не будут выпущены Molehill и Away3D/Alternativa3D? - person George Profenza; 11.01.2011
comment
Я не совсем понимаю, как это работает, но сейчас система IDW Social Desktop находится в стадии закрытого бета-тестирования. Наша компания разослала несколько копий программного обеспечения, которые люди могут использовать для тестирования и разработки плагинов для продвижения на рынке. Цель состоит в том, чтобы создать межплатформенный стандарт для создания веб-сайтов с богатым содержанием с использованием Java, Silverlight, Flash и HTML5, которые интегрируются с родной операционной системой. Этот плагин был просто чем-то, что бета-тестер внес в проект, и я подумал, что он довольно интересный, хотя я не совсем понимаю, как он работает. - person bbosak; 11.01.2011
comment
Моя компания планирует перейти на Molehill в день его выпуска. Я не знаю, заключает ли он Flash в свой собственный плагин или каким-то образом внедряет скрипт в процесс Flash, но он показывает окно сообщения безопасности, запрашивающее собственные привилегии взаимодействия, когда скрипт, использующий плагин, выполняется. - person bbosak; 11.01.2011
comment
Это решение сработало, когда я обновился до самой последней версии IDW Social Desktop. Судя по всему, это была ошибка старой версии. Спасибо! - person bbosak; 15.01.2011