Actionscript 3 向左/向右移动鼠标时闪烁自定义光标更改方向
我对Flash CS6比较陌生,我正在尝试在我正在制作的MS Paint克隆中制作一个自定义光标。我希望鼠标向右移动时光标向右移动,反之亦然 我的操作脚本如下所示:Actionscript 3 向左/向右移动鼠标时闪烁自定义光标更改方向,actionscript-3,flash,Actionscript 3,Flash,我对Flash CS6比较陌生,我正在尝试在我正在制作的MS Paint克隆中制作一个自定义光标。我希望鼠标向右移动时光标向右移动,反之亦然 我的操作脚本如下所示: Mouse.hide() mcGeit.stop() var x_k:Array = Array(); stage.addEventListener(MouseEvent.MOUSE_MOVE, flyttMus); function flyttMus(evt:MouseEvent) { mcGeit.x = mous
Mouse.hide()
mcGeit.stop()
var x_k:Array = Array();
stage.addEventListener(MouseEvent.MOUSE_MOVE, flyttMus);
function flyttMus(evt:MouseEvent)
{
mcGeit.x = mouseX;
mcGeit.y = mouseY;
var i:int
for(i = 0; i<100; i++)
{
x_k[i] = int(mouseX);
if (x_k[i] < x_k[i-10])
{
mcGeit.gotoAndStop(1);
}
else if (x_k[i] > x_k[i-10])
{
mcGeit.gotoAndStop(2);
}
}
}
Mouse.hide()
停止
var x_k:Array=Array();
stage.addEventListener(MouseEvent.MOUSE_MOVE,flyttMus);
功能flyttMus(evt:MouseEvent)
{
mcGeit.x=鼠标;
mcGeit.y=mouseY;
变量i:int
对于(i=0;i x_k[i-10])
{
mcGeit.gotoAndStop(2);
}
}
}
我看不出错误是什么,当我启动文件时,所有内容都会快速闪烁。首先是var x_k:Array=Array();必须是var x_k:Array=newArray()
Mouse.hide()
停止
变量温度:数值=0;
stage.addEventListener(MouseEvent.MOUSE_MOVE,flyttMus);
功能flyttMus(evt:MouseEvent){
mcGeit.x=鼠标;
if(mouseX
我这样编辑您的代码。如果您希望鼠标光标具有最佳的响应能力,并避免许多问题(例如双光标/根本没有光标,必须处理屏幕外/返回屏幕..),您应该使用允许您在操作系统级自定义鼠标光标的
鼠标类的其他方法。
不过,由于它是基于位图的,所以需要做更多的工作
如果光标是基于向量的:使用mcGeit.getBounds()
和BitmapData.draw(mcGeit,…)
从BitmapData创建MouseCursorData对象,并将其注册到Mouse.registerCursor(…)代码>
只要不注销游标,每个游标只能执行一次
在运行时,而不是mcGeit.gotoAndStop(…)代码>调用Mouse.cursor=使用已注册的游标名称的代码>
在任何时候,Mouse.cursor=“auto”代码>将恢复默认光标
您可以很容易地找到关于使用本机游标的教程或参考资料
请记住,在非常旧的平台(Flash Player<10.2,AIR<1.5)或手机/平板电脑上不支持它,因此如果您确实需要支持这些情况,可以举一个例子来说明如何检测鼠标光标功能:这是迄今为止最好的方法(比使用MouseMove事件的开销要小得多)。不过,我建议您使用完整的工作代码示例来改进您的答案。虽然问题的实际答案(它闪烁)是数组实例化中缺少的new
关键字。
Mouse.hide()
mcGeit.stop()
var temp:Number = 0;
stage.addEventListener(MouseEvent.MOUSE_MOVE, flyttMus);
function flyttMus(evt:MouseEvent) {
mcGeit.x = mouseX;
if(mouseX < temp){
mcGeit.gotoAndStop(1);
}else{
mcGeit.gotoAndStop(2);
}
mcGeit.x = mouseX;
mcGeit.y = mouseY;
temp = mouseX;
}