Flash制作简单的物体二段跳效果

  • 来源: 中国IT实验室 作者: xuqingzhong   2008-05-29/09:39
  • 非常非常简单的效果,按任意键进行方块的跳跃,有二段跳效果和轻跳和重跳效果,根据按键长短判定的。这是在兄弟会论坛做的一道题,很应该转来跟大家分享下~

    代码如下:
    package {
    /*author : CYPL*/
            import flash.display.*;
            import flash.events.*;
            import flash.utils.Timer;
            public class JumpTest extends Sprite {
                    private static  const G:int=1;
                    private var box:Sprite;
                    private var landObject:Sprite;
                    private var ySpeed:int=0;
                    private var jumpSpeed:int=-15;
                    private var keyPressed:Boolean= false;
                    private var keyReleased:Boolean=true;
                    private var comboJump:Boolean=false;
                    private var inAir:Boolean=true;
                    private var timer:Timer;
                    public function JumpTest() {
                            box=drawRect((stage.stageWidth-50)/2,100,50,50,0xff0000);
                            landObject=drawRect(0,300,stage.stageWidth,20);
                            (timer=new Timer(30)).start();
                            configureControl();
                    }
                    private function configureControl():void {
                            stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler,false,0,true);
                            stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler,false,0,true); #p#分页标题#e#
                            timer.addEventListener(TimerEvent.TIMER,timerHandler,false,0,true);

                    }
                    private function drawRect(posX:Number,posY:Number,w:Number,h:Number,color:uint=0):Sprite {
                            var rect:Sprite;
                            with (rect=new Sprite) {
                                    graphics.beginFill(color);
                                    graphics.drawRect(0,0,w,h);
                                    x=posX;
                                    y=posY;
                            }
                            return Sprite(addChild(rect));
                    }
                    private function keyDownHandler(evt:KeyboardEvent):void {
                            keyReleased && inAir && !comboJump&&(comboJump=true,ySpeed=jumpSpeed,trace("comboJump"));
                            !keyPressed&&(keyPressed=true,inAir=true,ySpeed=jumpSpeed,timer.start());
                            keyReleased=false;
                    }
                    private function keyUpHandler(evt:KeyboardEvent):void {
                            keyReleased=true;
                            ySpeed<-5&&(ySpeed+=8)&&ySpeed>0&&ySpeed=0;
                    }
                    private function timerHandler(evt:TimerEvent):void {
                            evt.updateAfterEvent();
                            ySpeed+=G;
                            box.y+=ySpeed;
                            ySpeed>0&&(box.hitTestObject(landObject))&&(trace(landObject.y),box.y=landObject.y-box.height,timer.stop(),keyPressed=false,inAir=false,comboJump=false);
                    }



            }
    }
    //文档类,fla中设置下就能看到效果#p#分页标题#e#

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多