2014-07-15 1 views
1

저는 엔지니어링 인턴쉽을 거의 마치며 그룹과 전보다 하드웨어 및 프로그래밍 관련 프로젝트가 할당되었습니다. 우리 프로젝트는 지구 온난화를 주제로 한 구식 아케이드 박스 타워 국방 게임이었습니다.AS3 : 키 누르기가 타워를 클릭합니다.

튜토리얼의 게임에서 마우스로 버튼을 클릭하여 탑을 선택하지만 우리의 목적을 위해서는 사용자가 키보드를 누를 수 있도록 게임을 완성했습니다. 버튼을 눌러 타워를 선택하십시오 (아케이드 박스의 버튼을 눌러 키를 누를 때 우리는 이미 그것을 얻었습니다).

다음은 변경해야 할 코드가 포함되어 있다고 생각하는 코드 섹션입니다. 그러나 아무 소용이 KeyboardEvent.KEY_DOWN, 손재주 시도했다.

위의 모든 내용이 의미가 없으면 이벤트 수신기가 "w"키를 누르는 것을 기다린 다음 Fire Tower를 선택해야합니다.

setupGame(); 

// Initialise the UI event listeners. 
mcGameUI.btnBuildFireTower.addEventListener(KeyboardEvent.KEY_DOWN, clickTowerFire); 
mcGameUI.btnBuildFireTower.addEventListener(MouseEvent.ROLL_OVER, showTowerFireHelp); 
mcGameUI.btnBuildFireTower.addEventListener(MouseEvent.ROLL_OUT, clearHelp); 

감사합니다 !!!!

답변

1

키보드 이벤트는 포커스가있는 객체를 청취해야합니다. 다행히도 stage에는 항상 포커스가 있으므로 키보드 이벤트 리스너를 여기에 첨부하는 것이 좋습니다. 특정 키 누름에 따라 작업을 추가하려면

stage.addEventListener(KeyboardEvent.KEY_DOWN, clickTowerFire); 

, 당신하여 KeyboardEvent에 연결되어 keyCode 속성을 사용할 수 있습니다

function clickTowerFire(event:KeyboardEvent):void 
{ 
    if(event.keyCode === 87) // W 
    { 
     // Your existing code here. 
    } 
} 
+0

감사합니다,하지만 난 그것이 선택되도록하는 방법을 만들 것 "w"키를 누르면? – Jack

+0

@ user3427093'clickTowerFire' 함수에이를 추가해야합니다. 내 대답을 예제로 업데이트하겠습니다. – Marty

+0

이것은 완벽하게 작동했습니다! 감사!!!!! – Jack

관련 문제