1

フラッシュを使用して 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{
....
..

「スーリス」クラスに入れてみました

stageRef.addEventListener(MouseEvent.ROLL_OVER,hover);

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

しかし、それは間違っているようです...ホバー機能に何を入れればよいかわかりません。(ライブラリに「handCursor」があります)。

ご助力ありがとうございます!

4

1 に答える 1

0

ライブラリに「handCursor」がある場合は、「HandCursor」などのクラスをそれに割り当てる必要があります。クラスは大文字で始めることをお勧めします。

したがって、コードはその新しいインスタンスを作成してから、次のように表示する必要があります。

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

handCursor.visible = false;非表示にしてから表示するには、次のようにします。

handCursor.visible = true;

また、handCursor は、関数に入れる場合はローカル変数です。すべての関数で使用できるようにグローバルにするには、クラスの先頭に置く必要があります。

また、何かエラーが発生していますか? もしそうなら、それらを共有してください。

于 2013-10-13T17:07:53.003 に答える