Flash舞台失去焦点

时间:2010-02-02 21:46:30

标签: flash actionscript-3 javascript-events addeventlistener

我在flash actionscript 3中为客户端构建了这个令人难以置信的精彩滚动缩略图图像查看器。(基本上它只是根据鼠标位置向上或向下滚动)。它的工作原理如此,(我永远无法获得正确的百分比,以便显示最顶层的图像)但是,这不是重点。什么真是令我感到烦恼的是当我打开浏览器窗口并加载我的.swf并点击桌面上的另一个应用程序时,浏览器窗口中的愚蠢滚动缩略图区域开始变得怪异。

“我的老鼠在哪儿啊?!?!?!?”我认为它在思考。

是否有stage.Unfocus事件我可以告诉我的滚动缩略图区域到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 个答案:

答案 0 :(得分:2)

stage.addEventListener(Event.MOUSE_LEAVE, function(e:Event):void {});

答案 1 :(得分:2)

我建议在Javascript中检测窗口焦点事件onblur和onfocus(http://www.devguru.com/technologies/ecmascript/quickref/evHan_onBlur.html),然后使用ExternalInterface(http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html)将启用/禁用调用发送到SWF文件。所以在你的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。

此致