在纯AS3 / Flare项目中替换光标的方法?

时间:2010-04-21 16:29:40

标签: actionscript-3 user-interface flare

我有一个纯粹的AS3(无Flex)项目,它使用Flare来显示数据可视化并与之交互。我刚刚实现了一些平移行为,所以你可以点击并拖动可视化,现在我想给用户一个可视的指示,这是可能的,通过用一个漂亮的抓着手图标切换箭头光标。

用户可以随时单击并拖动,除非鼠标位于可点击节点上(此时光标交换到指针 - 此行为已经存在)。

所以...
1)我是否需要创建自己的自定义位图/精灵,或者是否有可以使用的内置游标调色板? (我没有使用Flex。)

2)有没有办法简单地用项目范围内的平移光标替换默认箭头,还是需要在显示对象上附加交换到鼠标事件?我可以使用stage对象使这种行为适用于所有地方吗?

3)如何进行交换?我是直接使用Cursor对象还是需要参与CursorManager?

非常感谢任何指导,伪代码或智慧之词!

2 个答案:

答案 0 :(得分:2)

我认为闪存中没有CursorManger,只有flex。我正在做的方法是使用一个自定义类来隐藏光标并将自定义光标拖动到mouse_move。你必须将它设置为mouseChildren = false,否则将flickr或按钮不可点击。我发现的一个问题是自定义上下文菜单。试试这个链接http://abrahamyan.com/2009/03/23/as3-cursormanager/

答案 1 :(得分:2)

我学到的一些东西(非常新鲜,真的)。首先,您可以通过将Mouse.cursor设置为MouseCursor.TYPE的任何选项来设置一些内置游标选项。 Mouse对象是应用程序范围内的单例,因此无论您在代码中更改它的任何位置,更改都会持续,直到触发另一个更改。 对于我的简单案例,我这样做了:

    //on init, start with the "hand"
    Mouse.cursor = MouseCursor.HAND;

    //on clickable items, change to "pointer", then back to "hand"
    myClickableNode.addEventListener(MouseEvent.ROLL_OVER, function(evt:Event):void {
      Mouse.cursor = MouseCursor.BUTTON;
    });
    myClickableNode.addEventListener(MouseEvent.ROLL_OUT, function(evt:Event):void {
    Mouse.cursor = MouseCursor.HAND;
    });

结果是你总是有“手”,直到翻转可点击的东西,然后你得到“指针”。