有没有办法通过Mouse.cursor = '...';
设置鼠标光标的优先级(CursorManagerPriority.HIGH
)?
长话短说,我不得不求助于使用CursorManager
来应用游标,因为设置优先级对我的应用程序至关重要,因为HTML控件会覆盖所有游标更改而没有高优先级。使用游标管理器设置游标完全有效,但游标的速度/响应速度不如在操作系统级别渲染的游标(如here所述)。
如果没有办法,我的下一个问题是:有没有办法抑制HTML控件所做的光标更改?设置mouseEnabled = false
可以...但禁用HTML页面上的所有鼠标事件,因此不起作用。
示例:
这不起作用:
setInterval(function():void { Mouse.cursor = 'ibeam'; }, 100);
设置具有高优先级的光标有效:
// ibeamCursor is an embedded PNG
CursorManager.setCursor(ibeamCursor, CursorManagerPriority.HIGH, -2, -4);
(此代码用于mx:Application
范围)
答案 0 :(得分:0)
我将假设您可以访问HTML控件的代码...否则,我不确定您是否可以执行此操作。
我认为你不能设置Mouse.cursor =“...”设置的游标优先级; (因为我可能是错的......如果有人有相反的信息,请随时纠正我。)
但是,我认为只需使用布尔变量和if语句就可以很容易地抑制游标更改。
var customCursors:Boolean;
然后,在光标发生变化的每个地方......
if(customCursors == true)
{
Mouse.cursor = "mycursor";
}
这将允许或禁止更改游标,只需更改customCursors变量即可。
但是,如果您正在处理两个冲突的游标,并且您希望仅在某些实例中进行游标,则可能会有更多用处。为此,您可以尝试使用不同的if语句。
在我自己的代码中,我想只在拖动对象时显示一个光标,而不仅仅是当鼠标悬停在它上面时。一个在移动事件中,另一个在内部事件中。只有当对象被拖动到某一点时才会显示第三个,当它不是时,它需要是常规的拖动光标。
这造成了一场相当恼人的冲突......
为了解决这个问题,我实际检查了if语句中的Mouse.cursor属性!我的事件中各种Mouse.cursor语句的位置为游标创建了一种优先级。它运作得很好。
在我的鼠标结束语中:
Mouse.cursor = "hand";
在我的鼠标按下语句中(我开始拖动):
Mouse.cursor = "dragging";
在我的举动声明中:
if(Mouse.cursor == "draggingover")
{
Mouse.cursor = "dragging";
}
在我的鼠标注释语句中(我停止拖动):
Mouse.cursor = "hand";
在我的鼠标声明中:
Mouse.cursor = "pointer";
我希望这有帮助!如果是这样,不要担心忽略这个看似明显的解决方案......我认为当我们寻找内置函数时,我们都倾向于这样做。
如果这没用,抱歉。再一次,我认为还有另一种方式,但如果有人知道,请称重。
答案 1 :(得分:0)
我相信HTML控件继承自ScrollControlBase。尝试在该父控件上修复鼠标问题,而不是在HTML控件上修复。
此外,您可以尝试重写HTML控件,添加代码以删除默认光标外观。见this blog post,然后反其道而行之。