是否存在Flash错误的解决方法,其中选择不会停止?

时间:2009-04-29 21:04:36

标签: flash selection

对于Adobe Flash的问题,是否有任何解决方法,如果鼠标被拖动到电影之外,Flash Movie不会收到鼠标注册事件?

编辑:此问题似乎仅影响Firefox

请参阅:http://bugs.adobe.com/jira/browse/FP-234

基本上问题是,我有一个Flash电影,其中包含一个文本框,如果用户在文本框中单击并拖动选择(突出显示)文本,然后将它们拖到flash电影之外并释放鼠标,那么FLASH移动不会收到鼠标释放事件,即使鼠标已启动,在页面周围移动光标也会继续更改闪存中的选定文本。

许多人建议使用ActinScript来监听MOUSE_LEAVE事件,但有两个问题。一,我使用AS2而不是AS3,其次,如果鼠标在离开舞台时按住鼠标,MOUSE_LEAVE似乎不会触发。

编辑2: George Profenza的“肮脏黑客”几个月来一直在为我工作......但截至10月24日,我现在看到Adobe已将此问题标记为已解决,终于!

1 个答案:

答案 0 :(得分:2)

我可以想象问题是什么,但我似乎无法在简单的环境中重现。

这是一个'脏黑客'... as2风格,基于MOUSE_LEAVE的东西。

input.onKillFocus = function(newFocus:Object) {
    trace(this._name+" lost focus. New focus changed to: "+newFocus._name);
    delete input._parent.onEnterFrame;
};
input.onSetFocus = function(oldFocus:Object) {
    trace(this._name+" gained focus. Old focus changed from: "+oldFocus._name);
    input._parent.onEnterFrame = trackMouse;
}

function trackMouse():Void{
    if(input._xmouse < 0 || input._xmouse > (input._x + input._width)) onMouseOut();
    if(input._ymouse < 0 || input._ymouse > (input._y + input._height)) onMouseOut();
}

function onMouseOut():Void{
    Selection.setFocus(dummyBtn);
}

假设输入是可选择的文本字段。 如果文本字段是聚焦的,我添加一个enterFrame监听器来检查鼠标是在文本域之上还是之外(使用input._xmouse,与全局的_xmouse相对)。 如果鼠标位于文本区域之外,我将焦点更改为虚拟对象(名为dummyBtn的Button)。如果您在Firefox中并且在swf外部进行选择和释放,则此方法有效,因为只要您离开文本字段,焦点就会转移到dummyBtn。

我承认它有点粗糙,如果你仍然需要选择或其他东西,请告诉我。

古德勒克。

相关问题