如何在flex中实现自定义鼠标样式呢?
来源:互联网 发布:软件协议有哪些 编辑:程序博客网 时间:2024/04/29 04:45
如何在flex中实现自定义鼠标样式呢?flex本身提供了一个CursorManager可以用来管理鼠标样式。
比如,我们想把鼠标设置为忙碌状态,首先导入CursorManager包。在你的as代码头部添加:
import mx.managers.CursorManager;
你也可能会用到一些设置鼠标样式优先级的常量:
import mx.managers.CursorManagerPriority;
CursorManager里的方法都是静态的,所以你不必实例化它即可直接调用。在你想设置鼠标为忙碌状态的地方添加如下代码:
CursorManager.setBusyCursor();
当执行完该句时,鼠标就会变成小闹钟的等待样式。
如果你想用自己的图片作为鼠标的样式,首先要嵌入图像的元数据,以便在程序中使用它:
[Embed(source = "cur1.png")]
var curStyle:Class;
然后可以像使用一般的类那样来使用curStyle,新建一个curStyle的实例:
var cursorStyle1:Class= new cur1() ;
将该样式实例设置到鼠标样式:
CursorManager.setCursor(cursorStyle1);
你也可以同时指定该样式的优先级和偏移:
CursorManager.setCursor(cursorStyle1, CursorManagerPriority.HIGH, 5, 5);
CursorManager 类控制一个光标优先顺序列表, 在其中具有最高优先级的光标当前是可见的。 如果光标列表包含具有相同优先级的多个光标, 则光标管理器会显示最近创建的光标。
这样,鼠标就会变成你想要的样子。
不过CursorManger并不好用,虽然他提供了一个currentCursorID属性,但是通过实验发现对该属性进行设置并不能改变鼠标的样式,因为它没有改变鼠标样式的优先级属性,而一个鼠标样式是否显示取决于鼠标样式的优先级是否为最高。flex除了在设置鼠标样式,即setCursor函数中可以指定优先级以外,没有提供其他接口来改变CursorManager中鼠标样式列表中样式的优先级。这样我们就不能随心所欲的去指定我们的鼠标样式,我们需要通过添加和移除鼠标样式来达到我们的目的。
但这样不是很方便,代码看起来也别扭。通过跟踪CursorManager的源码,我们可以发现,CursorManger的基本原理也很简单,就是把原来的鼠标隐藏掉了,然后自己加了一个Sprite对象cursorHolder,在该对象上绘图或者把图片加进去,然后在stage上监听mousemove事件,把cursorHolder的位置设置到鼠标的位置,就实现了自定义鼠标样式。
那我们也可以自己写一个类来管理鼠标样式了。公司的源码,虽然是自己写的,还是不敢乱贴。类的代码就不发了,我就给个示例好了。根据这个原理,可以自己去实现。
view plaincopy to clipboardprint?
<?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">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<!--[CDATA[
import mx.core.BitmapAsset;
// 自定义的鼠标元素
var myCursor:Sprite = new Sprite();
protected function button1_clickHandler(event:MouseEvent):void
{
// 嵌入图像元数据
[Embed(source = "cur1.png")]
var cur1:Class;
// 把图片设置到自己的鼠标元素上去
var cursorStyle1:BitmapAsset = new cur1() as BitmapAsset;
myCursor.addChild(cursorStyle1);
// 添加stage的mousemove监听器
stage.addEventListener(MouseEvent.MOUSE_MOVE, mousemoveHandler);
// 添加sprite对象并隐藏鼠标
stage.addChild(myCursor);
Mouse.hide();
}
// 监听函数
protected function mousemoveHandler(event:MouseEvent):void
{
myCursor.x = event.stageX;
myCursor.y = event.stageY;
}
]]-->
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button x="274" y="177" label="按钮" click="button1_clickHandler(event)"/>
</s:Application>
- 如何在flex中实现自定义鼠标样式呢?
- 如何在CSS中自定义鼠标样式?
- flex实现自定义鼠标
- flex实现自定义鼠标
- 在Flex中,如何实现类似html中图片热点链接的效果呢?
- Flex中如何通过useRollOver样式,设置Tree项目在鼠标移在上面时高亮显示与否
- 如在Java中自定义鼠标的样式
- web中自定义鼠标样式
- unity中自定义鼠标样式
- FLEX中自定义button样式
- 在Android中实现自定义checkbox样式
- 在网页中如何定义鼠标的样式
- 如何在Flex 4中定制皮肤样式
- 在Flex中使用样式
- Flex鼠标样式修改
- WinForm中更改自定义鼠标样式
- JAVA中自定义设置鼠标样式
- 如何在ios中实现gif的现实呢?呵呵
- epoll使用详解(精髓)
- 一个java正规表达式工具类
- session与cookie的区别
- java工具类
- Spring中常用的hql查询方法 (getHibernateTemplate())
- 如何在flex中实现自定义鼠标样式呢?
- hdoj1008(模拟题)
- UNIX与LINUX的区别
- Cisco6509_7209交换机Netflow的配置
- 近来二三事 - 20100906
- Java自定义异常类的设计
- DBunit入门
- Ubuntu软件安装方法完全指南
- iphone opengl es 截图