|
在那紧张地做了一个半小时没做完。。。
pingpong.swf.rar 改名为 pingpong.swf即可..
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
- creationComplete="init()"
- >
- <mx:Script>
- <![CDATA[
- import mx.core.UIComponent;
- import mx.controls.Button;
- import mx.controls.TextArea;
- import mx.controls.Alert;
- import mx.containers.Canvas;
- public var gameStarted:Boolean=false;
- public var curX:Number=200;
- public var curY:Number=200;
- public var angle:int=0;
- public var gameArea:Sprite;
- public var speed:Number;
- public var LEN:Number=100;
- public function init():void{
- gameArea=new Sprite();
- var uc:UIComponent=new UIComponent();
-
- gameArea.graphics.beginFill(0xff0000,1);
- gameArea.graphics.lineStyle(2,0xff0000);
- gameArea.graphics.moveTo(200,100);
- gameArea.graphics.lineTo(400,400);
- gameArea.graphics.drawCircle(200,200,10);
- gameArea.graphics.endFill();
- this.addEventListener(Event.ENTER_FRAME,enterFrame);
-
- uc.addChild(gameArea);
- addChild(uc);
- }
- public function startGame():void{
- speed=5;
- gameStarted=true;
- angle=Math.random()*360;
- curX=200;
- curY=200;
- btn.visible=false;
- }
- private function drawBG():void{
- gameArea.graphics.lineStyle(0);
- gameArea.graphics.beginFill(0x434550,1);
- gameArea.graphics.drawRect(0,0,400,400);
- gameArea.graphics.endFill();
- }
- private function drawline(curx:Number,cury:Number):void{
- gameArea.graphics.lineStyle(2,0xff0000);//beginFill(0x4543ef,1);
- gameArea.graphics.moveTo(curx,0);
- gameArea.graphics.lineTo(curx+LEN,0);
- gameArea.graphics.moveTo(curx,400);
- gameArea.graphics.lineTo(curx+LEN,400);
- gameArea.graphics.moveTo(0,cury);
- gameArea.graphics.lineTo(0,cury+LEN);
- gameArea.graphics.moveTo(400,cury);
- gameArea.graphics.lineTo(400,cury+LEN);
- //2,0xff0000);
- //gameArea.graphics.endFill();
- }
- private function drawBean(mousex:Number,mousey:Number):void{
- if(curX>=400 || curY>=400 || curX<=0 || curY<=0){
- if(curY<=0 || curY>=400){
- //Alert.show(" "+angle);
- angle=-angle;
- //debug_txt.text+="degree "+angle+"dx "+Math.cos(Math.PI*(90-angle)/360)*speed+"\n";
- //debug_txt.text+="degree "+angle+"dy "+Math.cos(Math.PI*angle/360)*speed+"\n";
- //Alert.show(" "+angle);
- //fail();
- //Alert.show(" "+Math.sin(Math.PI*angle/360)*speed);
- //fail();
- }else{
- angle=180-angle;
- //debug_txt.text+="degree "+angle+"dx "+Math.cos(Math.PI*(90-angle)/360)*speed+"\n";
- //debug_txt.text+="degree "+angle+"dy "+Math.cos(Math.PI*angle/360)*speed+"\n";
- }
- //if(angle<=0)angle+=360;
- speed*=1.1;
- if(!hitTestWall(mousex,mousey,curX,curY)){
- fail();
- return;
- }
- }
- curX+=Math.cos(Math.PI*angle/180)*speed;
- curY-=Math.cos(Math.PI*(90-angle)/180)*speed;
-
- if(curX>=400)curX=400;
- if(curX<=0)curX=0;
- if(curY<=0)curY=0;
- if(curY>=400)curY=400;
- //gameArea.graphics.lineStyle(1);
- gameArea.graphics.beginFill(0xfffe00,1);
- gameArea.graphics.drawCircle(curX,curY,3);
- gameArea.graphics.endFill();
- }
- private function hitTestWall(mx:Number,my:Number,cx:Number,cy:Number):Boolean{
- return (
- ( (cx>=400 || cx<=0) && cy>=my && cy<=my+LEN) ||
- ( (cy>=400 || cy<=0) && cx>=mx && cx<=mx+LEN)
- );
- }
- private function fail():void{
- gameArea.graphics.clear();
- btn.visible=true;
- gameStarted=false;
- //this.removeEventListener(Event.ENTER_FRAME,enterFrame);
- }
- public function enterFrame(e:Event):void{
- if(!gameStarted)
- return;
- gameArea.graphics.clear();
- //gameArea.graphics.beginFill(0x4543ef,1);
- var curx:Number=this.mouseX;
- var cury:Number=this.mouseY;
- drawBG();
- drawBean(curx,cury);
- drawline(curx,cury);
- //gameArea.graphics.endFill();
- }
-
-
- ]]>
- </mx:Script>
-
- <mx:Button label="Begin." width="120" height="30" x="100" y="100" id="btn" click="startGame()" />
- <!--<mx:TextArea id="debug_txt" x="500" y="20" width="300" height="400" />-->
- </mx:Application>
复制代码 |
|