要使用按钮移动character,您必须使用两个MouseEvents:按下按钮时的MouseEvent.MOUSE_DOWN事件和释放按钮时的MouseEvent.MOUSE_UP,所以你可以这样做:
LeftBTN.addEventListener(MouseEvent.MOUSE_DOWN, LeftBTN_onPress);
LeftBTN.addEventListener(MouseEvent.MOUSE_UP, LeftBTN_onRelease);
function LeftBTN_onPress(e:MouseEvent):void
{
movingLeft = 1;
}
function LeftBTN_onRelease(e:MouseEvent):void
{
character.gotoAndStop(1);
movingLeft = 0;
}
RightBTN.addEventListener(MouseEvent.MOUSE_DOWN, RightBTN_onPress);
RightBTN.addEventListener(MouseEvent.MOUSE_UP, RightBTN_onRelease);
function RightBTN_onPress(e:MouseEvent):void
{
movingRight = 1;
}
function RightBTN_onRelease(e:MouseEvent):void
{
character.gotoAndStop(4);
movingRight = 0;
}
您也可以像这样为所有事件侦听器使用一个函数:
stage.addEventListener(KeyboardEvent.KEY_DOWN, move_character);
stage.addEventListener(KeyboardEvent.KEY_UP, move_character);
LeftBTN.addEventListener(MouseEvent.MOUSE_DOWN, move_character);
LeftBTN.addEventListener(MouseEvent.MOUSE_UP, move_character);
RightBTN.addEventListener(MouseEvent.MOUSE_DOWN, move_character);
RightBTN.addEventListener(MouseEvent.MOUSE_UP, move_character);
function move_character(e:*){
var event_type:String = e.type; // get event type : to identify which kind of event is fired
var current_target:String = e.currentTarget.name; // get target name : to identify the target of the fired event
switch (event_type){
case MouseEvent.MOUSE_DOWN :
if(current_target == 'LeftBTN') movingLeft = 1;
else movingRight = 1;
break;
case MouseEvent.MOUSE_UP:
if(current_target == 'LeftBTN'){
character.gotoAndStop(1);
movingLeft = 0;
} else {
character.gotoAndStop(4);
movingRight = 0;
}
break;
case KeyboardEvent.KEY_DOWN:
if (e.keyCode == Keyboard.RIGHT){
movingRight = 1;
} else if (e.keyCode == Keyboard.LEFT) {
movingLeft = 1;
}
break;
case KeyboardEvent.KEY_UP:
if (e.keyCode == Keyboard.LEFT) {
character.gotoAndStop(1);
movingLeft = 0;
} else if (e.keyCode == Keyboard.RIGHT) {
character.gotoAndStop(4);
movingRight = 0;
}
break;
}
}
或者,使用e 参数作为Event:
function move_character(e:Event){
var event_type:String = e.type; // get event type : to identify which kind of event is fired
var current_target:String = e.currentTarget.name; // get target name : to identify the target of the fired event
var key_code:Number;
switch (event_type){
case MouseEvent.MOUSE_DOWN :
if(current_target == 'LeftBTN') movingLeft = 1;
else movingRight = 1;
break;
case MouseEvent.MOUSE_UP:
if(current_target == 'LeftBTN'){
character.gotoAndStop(1);
movingLeft = 0;
} else {
character.gotoAndStop(4);
movingRight = 0;
}
break;
case KeyboardEvent.KEY_DOWN:
key_code = KeyboardEvent(e).keyCode;
if (key_code == Keyboard.RIGHT){
movingRight = 1;
} else if (key_code == Keyboard.LEFT) {
movingLeft = 1;
}
break;
case KeyboardEvent.KEY_UP:
key_code = KeyboardEvent(e).keyCode;
if (key_code == Keyboard.LEFT) {
character.gotoAndStop(1);
movingLeft = 0;
} else if (key_code == Keyboard.RIGHT) {
character.gotoAndStop(4);
movingRight = 0;
}
break;
}
}
希望能有所帮助。