2014-05-13 3 views
0

나는 최근에 EaselJS를 발견했으며 매우 간단한 캔버스 슈팅 게임을 만들려고 노력하고 있습니다.EaselJS - 스테이지 마우스 오버

내 캔버스의 너비는 500px, 높이는 500px입니다.

사용자의 마우스가 캔버스에 들어가면 대상이 마우스와 함께 움직이며 대상 (비트 맵)을 촬영할 수 있어야합니다.

이렇게하면 많은 웹 사이트에서 볼 수있는 광고 게임 중 일부와 매우 유사하게 작동합니다. "마우스를 사용하고 X를 터치하면 승리합니다!" 등.

그러나 나는 사용자의 마우스 커서를 따라 목표 스프라이트를 얻는 아주 간단한 작업을하려고 노력 중이다.

내가 잊거나 잘못하고있는 것이 아주 사소한 경우 사전에 사과드립니다. 내가 잘못 아니에요 경우

<script> 
window.onload = function() 
{ 
    init(); 
} 

function init() 
{ 

var canvas = document.getElementById("my_canvas"); 
var stage = new createjs.Stage(canvas); 

//background picture 
var background_sky = new createjs.Bitmap("sky.png"); 
stage.addChild(background_sky); 

//target sprite picture 
var target_sprite = new createjs.Bitmap("target.png"); 
stage.addChild(target_sprite); 

target_sprite.x = 150; 
target_sprite.y = 150; 

stage.enableMouseOver(20); 

stage.on("mouseover", function(e) 
{ 
    target_sprite.x = e.stageX; 
    target_sprite.y = e.stageY;  
    stage.update(); 
}); 

stage.update(); 

} 
</script> 

는, 이전 코드는 마우스가 캔버스 영역에 진입 할 때마다 마우스의 좌표를 target_sprite 이동을해야한다 : 여기 내 (자바 스크립트) 코드입니다.

하지만 작동하지 않습니다.

그림이 그려지며 mouseover 이벤트가 발생하지만 대상 스프라이트가 가끔씩 주위를 움직이며 예기치 않은 (임의의) 위치로 이동합니다.

마우스를 target_sprite의 위치로 이동하면 왼쪽 아래로 (재귀 적으로) 이동합니다. 그리고 target_sprite에 mouseover 핸들러를 붙이지는 않을 것입니다 - 스테이지에서만.

스테이지와 같은 마우스 오버 핸들러를 부착 할 수 있습니까?

내가 잘못 할 수 있습니까?

답변

1

내가 대신 그 것이었다 mouseover

+0

stagemousemove 이벤트를 사용한다고 생각합니다! 고마워. – user1183352

+2

특정 DisplayObject에 롤오버/롤아웃 이벤트가 필요한 경우 스테이지에서 EnableMouseOver 만 사용해야합니다. 실행하는 데 비용이 많이 들기 때문에 기본적으로 실행되지 않습니다. – Lanny

+0

Noted. 다시 한 번 감사드립니다! – user1183352