我对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 = 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);
}
}
}
我不知道错误是什么,当我启动文件时,一切都会快速闪烁。
答案 0 :(得分:1)
如果你想从鼠标光标获得最佳响应并避免许多问题(比如双光标/根本没有光标,必须处理屏幕外/返回屏幕......),你应该使用{{1}的其他方法} class,它允许您在OS级别自定义鼠标光标。 然而,它需要更多的工作,因为它是基于位图的
Mouse
和mcGeit.getBounds()
bitmapData.draw(mcGeit,...)
注册它们
你应该只为每个光标做一次,只要你没有&#39;取消注册游标。Mouse.registerCursor(...);
调用mcGeit.gotoAndStop(...);
Mouse.cursor = ...;
都会恢复默认光标。您可以轻松找到有关使用本机游标的tutos或资源
请注意,在非常旧的平台(Flash Player&lt; 10.2,AIR&lt; 1.5)或移动设备/平板电脑上不支持它,所以如果你需要支持这些情况,那么有一个例子说明如何检测鼠标光标功能:Optionally use Flash 10.2 cursors, while still being compatible with Flash 10.0?
答案 1 :(得分:0)
首先是var x_k:Array = Array();必须是var x_k:Array = new Array();
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;
}
我像这样编辑你的代码。