나는 액션 스크립트 2.0을 사용하여 간단한 platformer를 만들려고하는데 키보드에서 입력하는 데 문제가 있습니다. 키를 눌렀다 놓을 때마다 호출되는 두 개의 함수 "myKeyDown"및 "myKeyUp"이 있습니다.릴리스 된 코드의 코드 받기
keyListener.onKeyDown = function(){
myKeyDown();
}
keyListener.onKeyUp = function(){
myKeyUp();
}
기능은 Key.getCode() 메소드를 사용하여 눌려진 키를 확인합니다. 그것은 myKeyDown에서 작동하지만 myKeyUp에서는 버그가 있습니다. 버그는 (예를 들어) 먼저 A (왼쪽으로 이동), W (점프), W를 놓은 다음 A를 놓으면 발생합니다. 플레이어가 움직이지 않을 것입니다. A)
여기에서 문제를 이해합니다. Key.getcode 마지막으로 누른 키의 코드를 반환하고 내가 원하는 것은 마지막으로 릴리스 된 키의 코드입니다. 이런 식으로 몇 시간 씩 해왔지만 아무것도 찾지 못했습니다.
다음은 보유해야 할 때/해제 여러 개의 키가 조금 다른 접근 키 처리를위한 더 나은 것, 모두 myKeyDown 및 myKeyUp 기능
이런 경우에 대한function myKeyDown(){
//A
if(Key.getCode() == 65){
velX=-3;
}else
//D
if(Key.getCode() == 68){
velX=3;
}else
//W
if(Key.getCode() == 87){
if(isInAir == false){
jump();
}
}
}
function myKeyUp(){
//A
if(Key.getCode() == 65){
if(velX==-3){
velX=0;
}
}else
//D
if(Key.getCode() == 68){
if(velX==3){
velX=0;
}
}
}
이벤트 폴링, 항상 문제를 혼합. 당신이 그 열쇠의 상태를 저장하더라도, 당신은 eventhandler가 발생했을 때 자비를 보입니다. Google 액션 스크립트의 여러 키를 사용하면 몇 가지 아이디어를 얻을 수 있습니다. –