Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 向左/向右移动鼠标时闪烁自定义光标更改方向_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 向左/向右移动鼠标时闪烁自定义光标更改方向

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

我对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);
        }
    }
}
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;
    }