【问题标题】:as3: MOUSE_OVER is slow/not working correctlyas3: MOUSE_OVER 很慢/不能正常工作
【发布时间】:2010-09-03 02:49:39
【问题描述】:

好的,我正在使用纯 as3(没有创意套件或 xml)。我有一个精灵。它绘制一个大矩形,然后绘制一个稍小的矩形。当我将鼠标悬停在稍小的矩形上时,我想更改它的颜色。现在虽然它要么没有响应(我可以清楚地将鼠标放在矩形上并且什么都没有发生),要么响应很慢。此外,矩形的碰撞区域似乎有点偏离,即当我将鼠标放在矩形的左上角时,它的响应比我在其他地方的鼠标更频繁。

无论如何,这是我正在使用的代码:

public function MAIN()
        {
   BUTTON_1.graphics.clear();
   BUTTON_1.graphics.beginFill(0x000000);
   BUTTON_1.graphics.drawRect(188,96,104,24);
   BUTTON_1.graphics.endFill();
   BUTTON_1.graphics.beginFill(0x0000DC);
   BUTTON_1.graphics.drawRect(190,98,100,20);
   BUTTON_1.graphics.endFill();
   addChild(BUTTON_1);
   BUTTON_1.addEventListener(MouseEvent.MOUSE_OVER,MOUSE_OVER_1);
   function MOUSE_OVER_1():void
   {
    removeChild(BUTTON_1);
    BUTTON_1.graphics.clear();
    BUTTON_1.graphics.beginFill(0x000000);
    BUTTON_1.graphics.drawRect(188,96,104,24);
    BUTTON_1.graphics.endFill();
    BUTTON_1.graphics.beginFill(0x0000A0);
    BUTTON_1.graphics.drawRect(190,98,100,20);
    BUTTON_1.graphics.endFill();
    addChild(BUTTON_1);
   }
}

我对 as3 还很陌生,所以如果有更好的方法可以告诉我。

【问题讨论】:

  • 是的,很抱歉,我通过并接受了我得到的任何好的答案。无论如何我想通了,我没有意识到你可以将 hitTestPoint 与精灵一起使用,效果很好。
  • 如果您解决了自己的问题,您可以在下面发布您自己的答案。然后,您可以接受自己的答案,让其他人知道您的问题已经解决。有时在你被允许接受之前会有一点延迟,以防你弄错了,但它应该让你最终接受。

标签: actionscript-3


【解决方案1】:

此代码似乎不正确。鼠标事件监听器将 MouseEvent 对象作为参数。所以你的 MOUSE_OVER_1 应该是 function MOUSE_OVER_1(e:MouseEvent):void

【讨论】:

  • 其实这不是问题。由于MOUSE_OVER_1 是一个嵌套函数,它不会检查其参数。嵌套函数的处理方式与 Function 类型的顶级定义局部变量相同。
【解决方案2】:

我最终使用了 hitTestPoint,如下所示:

        if (BUTTON_1.hitTestPoint(mouseX,mouseY,true)) 
        {   

            removeChild(BUTTON_1);
            removeChild(TEXT_MENU_1);
            BUTTON_1.graphics.clear();
            BUTTON_1.graphics.beginFill(0x000000);
            BUTTON_1.graphics.drawRect(188,96,104,24);
            BUTTON_1.graphics.endFill();
            BUTTON_1.graphics.beginFill(0x0000A0);
            BUTTON_1.graphics.drawRect(190,98,100,20);
            BUTTON_1.graphics.endFill();
            addChild(BUTTON_1);
            addChild(TEXT_MENU_1);
        }
        else
        {
            removeChild(BUTTON_1);
            removeChild(TEXT_MENU_1);
            BUTTON_1.graphics.clear();
            BUTTON_1.graphics.beginFill(0x000000);
            BUTTON_1.graphics.drawRect(188,96,104,24);
            BUTTON_1.graphics.endFill();
            BUTTON_1.graphics.beginFill(0x0000DC);
            BUTTON_1.graphics.drawRect(190,98,100,20);
            BUTTON_1.graphics.endFill();
            addChild(BUTTON_1);
            addChild(TEXT_MENU_1);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多