2012-12-18 1 views
0

easeljs 라이브러리를 사용하여 학교 수업을위한 간단한 게임을 만드는 방법을 배우고 있습니다. 내가 만든 히트 테스트를 사용하여 목표물을 가리키고있는 동안 작은 애니메이션을 보여줌으로써 십자 기호가 플레이어에게 약간의 피드백을주고 싶습니다.Easeljs 스프라이트 애니메이션이 프레임에 붙어 있습니다.

그러나 십자형 커서가 대상에 닿으면 애니메이션 (십자선 중앙을 가리키는 두 개의 작은 삼각형)이 첫 번째 프레임에 붙어있는 것처럼 보입니다.

여기 내 코드가 약간 있으므로이 두 함수를 티커 함수에 넣습니다. 함수는 자신이해야 할 일을합니다 (console.log에 메시지를 보냄으로써 검사했습니다). 그러나 변수 "hitTestControle"가 true로 설정된 즉시 애니메이션이 재설정됩니다. http://athena.fhict.nl/users/i279907/achtergrond/achtergrond.html

function hitTest() { 
    if(distance(crossHair, block) < 60) { 
     hitTestControle = true; 
} else { 
     hitTestControle = false; 
     console.log(hitTestControle); 
    } 
} 

function hitTestControl() { 
    if(hitTestControle == true) { 
     crossHair.gotoAndPlay("move"); 
     console.log("hit"); 
    } else { 
     crossHair.gotoAndPlay("stop"); 
    } 
} 

PS : 당신은 모든 코드를 체크 아웃 할 경우 , 여기에 "게임"에 대한 링크입니다 또한 내가 사용이 그러나 hitTest에 문제가있는 것 같습니다.

function distance() { 
    var difx = blok.x - crossHair.x; 
    var dify = blok.y - crossHair.y; 
    return Math.sqrt((difx * difx) + (dify * dify)); 
} 

답변

0

애니메이션을 시작한 것처럼 보입니다. 첫 번째 프레임으로 설정하고 시작합니다. hitTestControle이 true 일 때마다 나타납니다. hitTestControle은 대상 위에 마우스를 올려 놓는 한 true이므로 애니메이션은 두 번째 프레임에 도달하지 않습니다.

hitTestControle = false에서 hitTestControle = true로 전환 할 때 애니메이션을 시작해야하지만 그렇게되면 자동으로 재생하게됩니다. , 즉

function hitTestControl() { 
    if(hitTestControle == true && alreadyOverHit == false) { 
     crossHair.gotoAndPlay("move"); 
     alreadyOverHit = true; 
     console.log("hit"); 
    } else { 
     crossHair.gotoAndPlay("stop"); 
     alreadyOverHit = false; 
    } 
} 

만 히트를 감지하고 첫 번째 프레임 동안 한 번 애니메이션을 시작하고 만지지 마세요 :

것은 이런 식으로 hitTestControl() 함수를 변경해보십시오 당신이 표적에서 벗어나 다시 돌아와 않는 한.