27
2015
10

拖动投掷

在小球上面按下鼠标拖动小球,快速移动过程中松开鼠标,可以将小球抛出。

demo:

获得 Adobe Flash Player

代码:

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;
				}
			}
		}
	}
	
}

源码打包下载

« 上一篇下一篇 »

相关文章:

闪电效果  (2017-11-28 15:4:19)

线段与椭圆的交点  (2017-1-6 14:43:41)

as3录制swf并保存flv视频  (2016-12-28 8:43:41)

解九连环  (2016-12-1 20:58:11)

as3实现setTimeout和trace  (2016-11-10 16:47:37)

registerCursor注册系统光标  (2016-9-14 9:49:40)

鼠标光标管理  (2016-9-13 17:44:3)

变形框(transform)实现  (2016-9-13 16:56:6)

flash文本消除锯齿不显示  (2016-8-25 11:43:31)

greenSock的easing曲线  (2016-8-24 18:30:11)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。