出来很久了,以前只是知道 没有去细看 昨天有时间仔细看了以下用法
首先
需要下载以上版本。至于SDK怎么安装,我就不说了,你懂的! 然后对于自定义鼠标样式的图片有点要求 由于系统限制不能大于32x32像素
关于理论预热
先看以下效果
再看一个小例子
[Embed(source = 'assets/aa.png')] private var ZoomCursor:Class;
var cursorData:MouseCursorData = new MouseCursorData();
//设置热点
cursorData.hotSpot = new Point(15,15); var bitmapDatas:Vector.<BitmapData> = new Vector.<BitmapData>(1, true);
//外部导入的图片类 var bitmap:Bitmap = new ZoomCursor(); bitmapDatas[0] = bitmap.bitmapData; cursorData.data = bitmapDatas; Mouse.registerCursor("myCursor", cursorData); Mouse.cursor = "myCursor";
正如你看到的那样,以上是一个完整的鼠标自定义样式示例
下面简单解释以下源码
设置鼠标的自定义样式是在 Mouse.cursor设置 比如Mouse.cursor = MouseCursor.ARROW;
但是系统给我们提供的几种远不能满足我们的需求
于是我们新建一个 bitmapDatas 然后传入一个 BitmapData的 Vector数组(至于为什么是数组而不是 BitmapData我稍后解释) Vector存放着我们自定义的鼠标样式bitmapdata
注册一下子
Mouse.registerCursor("myCursor", cursorData);
最后在 Mouse.cursor = "myCursor"; 调用就OK了
通过以上的小例子我们能初步使用自定义鼠标样式,以下是一点小拓展
Vector中可以传入多个位图的bitmapdata 用来制作一系列动画样式, 至于动画的帧频 这个有点小不同
mouseCursorData.frameRate = 1;
在 MouseCursorData设置 这个帧频可以不同于swf本身的帧频,而且默认情况下帧频就是1
你如果在给MouseCrusonData中传入的 Vector中放入三个不同的图片的bitmapdata 就是鼠标样式每秒换一张
以下是一个完整的拓展实例
// 创建一个 MouseCursorData 对象
var cursorData:MouseCursorData = new MouseCursorData(); //设置热点 cursorData.hotSpot = new Point(15,15); // 创建一个有三个bitmapdata的vector对象 var bitmapDatas:Vector.<BitmapData> = new Vector.<BitmapData>(3, true); // 这里用了几行伪代码 传入三个不同的bitmap var frame1Bitmap:Bitmap = new frame1(); var frame2Bitmap:Bitmap = new frame2(); var frame3Bitmap:Bitmap = new frame3(); // 将图片的 bitmapDatas赋值给Vector bitmapDatas[0] = frame1Bitmap.bitmapData; bitmapDatas[1] = frame2Bitmap.bitmapData; bitmapDatas[2] = frame3Bitmap.bitmapData; // 给 MouseCursor对象赋值 cursorData.data = bitmapDatas; // 单独设置鼠标动画为每秒一帧 不同于swf的帧频 cursorData.frameRate = 1; // 将 MouseCursorData注册给鼠标对象 Mouse.registerCursor("myAnimatedCursor", cursorData); // 最后是给鼠标指定样式
Mouse.cursor = "myAnimatedCursor";
通过以上两个例子解决了大部分问题
最后 补充一下,恢复鼠标默认样式的代码 Mouse.cursor = MouseCursor.AUTO;
好了,结束....
原文来自:http://blog.sina.com.cn/s/blog_6859df370100wtk4.html