在小球上面按下鼠标拖动小球,快速移动过程中松开鼠标,可以将小球抛出。
demo:
代码:
package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; public class Main extends MovieClip { public function Main() { // constructor code graphics.lineStyle(2, 0xff0000, 1.0); graphics.drawRect(50, 50, 700, 500); var ball:Sprite = new Sprite(); ball.graphics.beginFill(0x00ff00); ball.graphics.drawCircle(0, 0, 20); ball.graphics.endFill(); addChild(ball); ball.x = 100; ball.y = 100; ball.buttonMode = true; var gravity:Number = 1.0; var isDown:Boolean = false; var isSleep:Boolean = false; var offsetX:Number; var offsetY:Number; var speedX:Number=0; var speedY:Number = 0; var acaleX:Number = 0; var acaleY:Number=0; ball.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); function mouseDownHandler(e:MouseEvent):void { isDown = true; offsetX = mouseX - ball.x; offsetY = mouseY - ball.y; isSleep = false; stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); stage.addEventListener(Event.MOUSE_LEAVE, mouseUpHandler); } function mouseMoveHandler(e:MouseEvent):void { //speedX += (mouseX - ball.x-offsetX); //speedY += (mouseY - ball.y-offsetY); isSleep = false; } function mouseUpHandler(e:Event):void { isDown = false; stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); stage.removeEventListener(Event.MOUSE_LEAVE, mouseUpHandler); } function enterFrameHandler(e:Event):void { if (isSleep) { return; } if (isDown) { var a:Number = mouseX - ball.x; var b:Number = mouseY - ball.y; var k:Number = .1; speedX +=(a-speedX-k*a)*k; speedY +=(b-speedY-k*b)*k; } speedY += gravity; ball.x += (speedX*=0.99); ball.y += (speedY*=0.99); if (ball.x730) { ball.x = 730; speedX *= -1; } if (ball.y530) { ball.y = 530; speedY *= -1; } if (Math.abs(ball.y-530)<0.5&&Math.abs(speedX) < 0.5 && Math.abs(speedY) < 0.5) { speedX = speedY = 0; isSleep = true; } } } } }
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。