Глобальная проблема MouseMove в AS3 - PullRequest
0 голосов
/ 02 мая 2011

Мне нужно зарегистрировать движение мыши для функции, подобной заставке.Приведенный ниже код работает нормально, но событие перемещения мыши не запускается, когда мышь находится над фрагментом ролика, в который был загружен внешний SWF-файл с помощью URLRequest.Есть ли способ обойти это без изменения кода во внешнем SWF-файле?

stage.addEventListener(MouseEvent.MOUSE_MOVE,function(e){
    lastMoveTime=getTimer()
    trace(stage.mouseX)
})

ОБНОВЛЕНИЕ:

Мне нужно, чтобы интерактивность сохранялась как в родительском, так и в дочернем SWF-файлах.

дочерним swf является AS2.

Вот код для загрузки AS2 swf:

var sendPane = new Loader(); 
var url:URLRequest = new URLRequest("info.swf"); 
sendPane.load(url); 
addChild(sendPane);

Ответы [ 2 ]

1 голос
/ 02 мая 2011

установите загрузочный контейнер на loader.mouseChildren = false; или loader.mouseEnabled = false;

Или вы можете добавить Sprite или Movieclip в верхней части сцены с помощью sprite.alpha = 0 и нарисовать его размером со сцену.затем добавьте слушателя мыши к этому Sprite.

var s:Sprite = new Sprite();
s.graphics.beginFill(0, 0);
s.graphics.drawRectangle(0, 0, stage.stageWidth, stage.stageHeight);
s.endFill();
s.addEventListener(MouseEvent.MOUSE_MOVE, listener);

addChild(s);

Версии Booth, которые не позволяют загруженному SWF реагировать на мышь.Но ты сказал заставку, так что я подумал, что все в порядке.

0 голосов
/ 28 июля 2011

Вместо прослушивания событий MOUSE_MOVE вы можете переписать свой код, чтобы использовать таймер с задержкой 10 мсек и прослушивать событие TIMER.В обработчике проверьте, изменилась ли мышеловка с момента последнего вызова.Это не очень хорошее решение, но сочетание фильмов AS3 и AS2 делает это необходимым.

var lastPos:Point = new Point(stage.mouseX, stage.mouseY);
var lastMoveTime:int;
var timer:Timer = new Timer(10, 0);
timer.addEventListener(TimerEvent.TIMER, handleTimer);
timer.start();

private function handleTimer(e:TimerEvent):void
{
    if (lastPos.x!=stage.mouseX || lastPos.y!=stage.mouseY) lastMoveTime = getTimer();
    lastPos = new Point(stage.mouseX, stage.mouseY);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...