1

如何为 Flex 应用程序中显示的默认光标(白色箭头)设置外观或以其他方式更改?

4

3 回答 3

1

是的,这是可能的。您需要利用mx.managers.CursorManager.

无法替换光标图形,但您可以通过向具有高优先级的管理器添加新光标来实现:

 CursorManager.setCursor(myCursor, CursorManagerPriority.HIGH);

在上面的示例中,myCursor可以是 JPEG、GIF、PNG 或 SVG 图像、Sprite 对象或 SWF 文件。此外,setCursor还接受两个附加参数 ,xOffset:Number = 0, yOffset:Number = 0如果需要,您可以使用它们将图像从实际指针位置偏移。

回复:您的评论:

我相信你是对的。除了某些事件 foo 之外,我无法覆盖组件悬停光标。请记住,显示的是最近添加的具有最高优先级的光标(当然是`CursorMangager)。

于 2009-08-19T17:06:30.107 回答
0

看看下面的例子: http ://blog.flexexamples.com/2007/09/10/changeing-the-cursor-in-a-flex-application-using-the-cursormanager-class/

于 2009-08-20T17:06:10.110 回答
0

如果要更改光标,则需要在鼠标当前位于 Flex TextInput 控件的 TextField 子对象上方时检查鼠标:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" mouseMove="application1_mouseMoveHandler(event)">

    <fx:Script>
        <![CDATA[

            protected function application1_mouseMoveHandler(event:MouseEvent):void
            {
                if(event.target is TextField)
                {
                    if(TextField(event.target).type == TextFieldType.INPUT)
                    {
                        Mouse.hide();
                    }
                }
                else
                {
                    Mouse.show();
                }
            }

        ]]>
    </fx:Script>

    <mx:TextInput width="300" />
</s:Application>

这只是让它消失,但是您可以利用这个机会通过将 Mouse.hide() 替换为其他注释中描述的 CursorManager 方法来使光标变为任何您想要的。我真的不认为这个事件是“诡计”,并且覆盖 PlayerGlobals.swc 类总是比开放的 Flex SDK 的东西更困难。

于 2009-08-20T19:57:55.663 回答