Flash Stage теряет фокус - PullRequest
       8

Flash Stage теряет фокус

0 голосов
/ 03 февраля 2010

Я создал этот невероятно блестящий просмотрщик миниатюр изображений для клиента в flash actioncript 3. (По сути, он просто прокручивается вверх или вниз в зависимости от положения мыши).Это работает так, (я никогда не могу получить правильные проценты, чтобы он показал самое верхнее изображение), но это не относится к делу.Что меня действительно раздражает, так это то, что когда у меня открыто окно браузера с загруженным файлом .swf, и я нажимаю на другое приложение на своем рабочем столе, тупая область прокрутки в окне браузера начинает волноваться.

"Где моя мышь? ??!?!?!?"Я предполагаю, что это размышление.

Есть ли этап. Нефокусное событие, с помощью которого я могу передать свою область миниатюр прокрутки в STFU с помощью?

Я бы даже подумал написать какой-нибудь JavaScript для вызова функции flashесли это предпочтительный метод.Заранее спасибо.

function checkMousePos(e:Event):void
{ 
  if(mouseX < 145){
    try{
        var sHeight:int = MovieClip(root).stageHeight;
    }catch(Error){
        trace("stage not loaded");
    }
    if(mouseY > (sHeight/2) + 100){
        if(tHolder.y-50 > - (compHeight-sHeight)){
            Tweener.addTween(tHolder, {y:tHolder.y - 90, time:1,transition:"easeOutCubic"});
        }
        }else if(mouseY < (sHeight/2) - 100){
            if(tHolder.y+50 < 80){
            Tweener.addTween(tHolder, {y:tHolder.y + 90, time:1,transition:"easeOutCubic"});
            }else{
               Tweener.addTween(tHolder, {y:80, time:1,transition:"easeOutCubic"});
            }
        }
    }
}

-J

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

Я предлагаю обнаруживать события фокусировки окна onblur и onfocus (http://www.devguru.com/technologies/ecmascript/quickref/evHan_onBlur.html) в Javascript, а затем отправлять вызовы включения / выключения через SWF-файл, используя ExternalInterface (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html). Итак, внутри вашего HTML выможет иметь что-то вроде этого (предполагая, что здесь swfobject, но это не обязательно http://code.google.com/p/swfobject/):

swfobject.embedSWF("mySWF", "mySWFId", swfWidth, swfHeight, "10.0.0", "", flashvars, params, attributes);

window.onblur=function () {
    if ( document.getElementById("mySWFId").disableMouseScrolling) {
        document.getElementById("mySWFId").disableMouseScrolling();
    }
}

window.onfocus=function () {
    if ( document.getElementById("mySWFId").enableMouseScrolling ) {
        document.getElementById("mySWFId").enableMouseScrolling();
    }
}

И внутри вашего SWF-файла есть некоторый эквивалентный код ExternalInterface для подключения методов:

public class MyApplication extends ...
{
    public function MyApplication ():void
    {
        ExternalInterface.addCallback("disableMouseScrolling", disableMouseScrolling);
        ExternalInterface.addCallback("disableMouseScrolling", enableMouseScrolling);
        ...
    }
    private function disableMouseScrolling ():void
    {
    }
    private function enableMouseScrolling ():void
    {
    }
    ...
}

Надеюсь, это поможет.Я использовал его с IE8, Firefox 3 и Crome 4.

С уважением,

2 голосов
/ 03 февраля 2010
stage.addEventListener(Event.MOUSE_LEAVE, function(e:Event):void {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...