如何在Roll Over事件上更改光标

时间:2013-10-13 15:06:23

标签: actionscript-3

我正在使用闪光灯在AS3中点击并点击游戏。

我通过创建一个新类“Souris”来改变光标的外观。它运作得很好。现在我正在尝试更改光标在场景上的对象上时的外观。

我已经读过MouseEvent.ROLL_OVER是一个很好的方法,但我无法弄清楚如何做到这一点......

我有这样的Souris课程:

    public class Souris extends MovieClip
    {
 private var engine:Engine;
        private var stageRef:Stage;
        private var p:Point = new Point(); 

        public function Souris(stageRef:Stage)
        {
            Mouse.hide(); //make the mouse disappear
            mouseEnabled = false; //don't let our cursor block anything
mouseChildren = false;

            this.stageRef = stageRef;
            x = stageRef.mouseX;
            y = stageRef.mouseY;

            stageRef.addEventListener(MouseEvent.MOUSE_MOVE, updateMouse, false, 0, true);
            stageRef.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler, false, 0, true);
            stageRef.addEventListener(Event.ADDED, updateStack, false, 0, true);
            stageRef.addEventListener(MouseEvent.ROLL_OVER,hover);

        }

        private function updateStack(e:Event) : void
        {
            stageRef.addChild(this);
        }
        private function hover(e:MouseEvent):void {
               souris.visible = false;
            }

        private function mouseLeaveHandler(e:Event) : void
        {
            visible = false;
            Mouse.show(); //in case of right click
            stageRef.addEventListener(MouseEvent.MOUSE_MOVE, mouseReturnHandler,    false, 0, true);
        }

        private function mouseReturnHandler(e:Event) : void
        {
            visible = true;
            Mouse.hide(); //in case of right click
            removeEventListener(MouseEvent.MOUSE_MOVE, mouseReturnHandler);
        }

        private function updateMouse(e:MouseEvent) : void
        {
            x = stageRef.mouseX;
            y = stageRef.mouseY;

            e.updateAfterEvent();
        }

    }

}
}

在我的主要课程(引擎课程)中,我得到了:

private var souris:Souris;

public function Engine(){



                        souris = new Souris(stage);
            stage.addChild(souris);

        }
private function startGame(e:Event):void{
....
..

我试图加入“Souris”课程

stageRef.addEventListener(MouseEvent.ROLL_OVER,hover);

private function hover(e:MouseEvent):void {
Engine.souris.visible = false; 
handCursor.visible = true ;
}

但似乎错了...... 我不知道在我的悬停功能中放什么。 (我的图书馆里有“handCursor”)。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果你有" handCursor"在你的图书馆里,你需要为它分配一个课程,比如' HandCursor'。我建议课程以大写字母开头。

所以你的代码需要创建一个新实例然后显示它,比如

var handCursor:HandCursor = new HandCursor; handCursor.visible = false;

handCursor.visible = false;使其不可见,然后为了使其可见,您会:

handCursor.visible = true;

另外,如果放入一个函数,handCursor是一个局部变量,为了使它在全局函数中使用,你需要将它放在类的开头。

另外,你有任何错误吗?如果是,请分享。