2013-10-13 3 views
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(); 
     } 

    } 

} 
} 
내 메인 클래스 (엔진 클래스)에서

내가있어 : 나는 "Souris의"클래스에 넣어 시도했습니다

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"가 있습니다.)

도움 주셔서 감사합니다.

답변

0

라이브러리에 "handCursor"가있는 경우 'HandCursor'와 같은 클래스를 할당해야합니다. 수업은 대문자로 시작하는 것이 좋습니다.

그래서 코드는 것, 그것은 볼 수 있도록,

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

handCursor.visible = false;이 보이지 않을 수 있습니다처럼, 다음의 새 인스턴스를 만들 보여해야합니다 :

handCursor.visible = true; 

또한, 함수에 넣으면 handCursor는 로컬 변수이므로 모든 함수에서 전역 변수로 사용하려면 클래스의 시작 부분에 넣어야합니다.

또한 오류가 있습니까? 그렇다면 공유하십시오.

+0

오류는 없지만 항목에 커서를 올리면 내 handCursor가 나타나지 않습니다 ... 이유를 알고 있습니까? 내 엔진 클래스에서 내가 souris.visible = true (나는 "Souris"클래스에 코드를 넣었습니다.)라고 생각합니다. – user2421975

+0

아니요, MouseEvent.ROLL_OVER가 작동하지 않는다고 생각합니다. 아마 ... 나는 두지 말아야한다. – user2421975

+0

확인 방법을 찾았습니다. MouseEvent.MOUSE_OVER였습니다. 너의 도움을위한 Thx !!!! – user2421975

관련 문제