所以,我有这个游戏,我希望玩家移动,所以当按键按下时我使用了一个tick方法,它创建了2个事件监听器,一个keyup监听器和一个tick。keyup监听器删除它自己并删除tick。刻度包含运动和我假定动画的位置。这是我的代码:
// For every frame //
import flash.events.Event;
import flash.events.TouchEvent;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
var gravity = 0.6;
var floor = 410;
jordan1.y = floor;
jordan1.speedY = floor;
jordan1.impulsion = 10;
var onFloor:Boolean = false;
var keyRight:Boolean = false;
stage.addChild(jordan1);
stage.addChild(leftwall1);
stage.addChild(finish1);
stage.addChildAt(abovedoor, 0);
stage.addChild(left);
stage.addChild(right);
stage.addChild(jump);
addEventListener(Event.ENTER_FRAME, enters);
function enters(e:Event) {
jordan1.speedY += gravity;
jordan1.y += jordan1.speedY
if(jordan1.y > floor) {
jordan1.speedY = 0;
jordan1.y = floor;
onFloor = true;
if(keyRight == true) {
jordan1.gotoAndPlay(7);
}
if(keyRight == false) {
jordan1.gotoAndStop(1);
}
}
}
function stageup(e:MouseEvent) {
removeEventListener(Event.ENTER_FRAME,tickleft);
removeEventListener(Event.ENTER_FRAME,tickright);
removeEventListener(MouseEvent.MOUSE_UP, stageup);
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, stagedown);
function stagedown(e:MouseEvent) {
stage.addEventListener(MouseEvent.MOUSE_UP, stageup);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, jumpkey);
function jumpkey(e:KeyboardEvent) {
if(e.keyCode == Keyboard.SPACE) {
if(onFloor == true)
{
jordan1.speedY=-jordan1.impulsion;
onFloor = false;
jordan1.gotoAndStop(2);
}
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, leftkey);
function leftkey(e:KeyboardEvent) {
if(e.keyCode == Keyboard.LEFT) {
addEventListener(Event.ENTER_FRAME, leftkeytick);
stage.addEventListener(KeyboardEvent.KEY_UP, leftkeydown);
}
}
function leftkeydown(e:KeyboardEvent) {
removeEventListener(Event.ENTER_FRAME, leftkeytick);
stage.removeEventListener(KeyboardEvent.KEY_UP, leftkeydown);
}
function leftkeytick(e:Event) {
jordan1.x-=10;
if(onFloor == true) {
jordan1.gotoAndStop(3);
}
if(onFloor == false) {
jordan1.gotoAndStop(6);
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, rightkey);
function rightkey(e:KeyboardEvent) {
if(e.keyCode == Keyboard.RIGHT) {
keyRight == true;
addEventListener(Event.ENTER_FRAME, rightkeytick);
stage.addEventListener(KeyboardEvent.KEY_UP, rightkeydown);
}
}
function rightkeydown(e:KeyboardEvent) {
removeEventListener(Event.ENTER_FRAME, rightkeytick);
keyRight == false;
stage.removeEventListener(KeyboardEvent.KEY_UP, rightkeydown);
}
function rightkeytick(e:Event) {
jordan1.x+=10;
if(onFloor == true) {
jordan1.gotoAndPlay(7);
}
if(onFloor == false) {
jordan1.gotoAndStop(5);
}
}
// Just for this frame //
leftwall1.addEventListener(Event.ENTER_FRAME, leftwall1hit);
function leftwall1hit(e:Event) {
if(leftwall1.hitTestObject(jordan1)) {
jordan1.x +=10;
}
}
abovedoor.addEventListener(Event.ENTER_FRAME, abovedoorhit);
function abovedoorhit(e:Event) {
if(abovedoor.hitTestObject(jordan1)) {
jordan1.x-=10;
}
}
jordan1.addEventListener(Event.ENTER_FRAME, finish1hit);
function finish1hit(e:Event) {
if(jordan1.x > 960) {
gotoAndStop(67);
}
}
所以,当我测试它并按下它时,它会在 7 处停止,而不是播放。请帮忙!谢谢!