我只能让它跳,部分程序如下:
this.addEventListener(Event.ENTER_FRAME,gameLoop);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
////
public function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 32) {
if (! hero.inAir) {
hero.jump=true;
}
}
}
/////////////
public function gameLoop(event:Event) {
//
if (lastTime==0) {
lastTime=getTimer();
}
var timeDiff:int=getTimer()-lastTime;
lastTime+=timeDiff;
moveCharacter(hero, timeDiff);
}
/////////
public function moveCharacter(char:Object,timeDiff:Number) {
var verticalChange:Number=char.dy*timeDiff+timeDiff*gravity;
if (verticalChange>15.0) {
verticalChange=15.0;
}
char.dy+=timeDiff*gravity;
if (char.jump) {
// start jump
char.jump=false;
char.dy=- char.jumpSpeed;
verticalChange=- char.jumpSpeed;
newAnimState="jump";
}
///////
}
多多指教,思考中。有更好的办法也可以SHOW下
有更简单可行的方法也行。
操作如下:
1 快速按一下键盘松开小跳,键盘按下时便已起跳;
2 长按根据按住的时间来决定跳跃的高度,但有最高值,键盘按下时便已起跳。
flash,as3,请问如何修改程序才可以让一个MC根据按键长短判定的它的跳跃高度?谢谢
答案:1 悬赏:10 手机版
解决时间 2021-03-17 10:05
- 提问者网友:了了无期
- 2021-03-16 18:50
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-03-16 19:45
给你说下思路,你要先将这个事件分成两个阶段,一、键盘按下时执行enterframe事件(来决定键盘松开后的跳跃高度)。二、键盘弹起时停止enterframe事件,开始跳跃。
接下来细化这个思路,
enterframe事件执行的其实就是个变量不断增加的函数
跳跃有个最高度限制,那么在enterframe事件里就加一个判断,大于这个高度临界点时变量不再向上升
思路就是这样了,看你写的代码,应该还是基础的,写不出来在hi我吧
接下来细化这个思路,
enterframe事件执行的其实就是个变量不断增加的函数
跳跃有个最高度限制,那么在enterframe事件里就加一个判断,大于这个高度临界点时变量不再向上升
思路就是这样了,看你写的代码,应该还是基础的,写不出来在hi我吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯