`
china34420
  • 浏览: 134123 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

弹跳效果

阅读更多
鼠标拖动可实现弹跳...
package 
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	
	/**
	 * ...
	 * @author zkl
	 */
	public class dragAndMove1 extends Sprite
	{
		private var ball:Ball;
		private var vx:Number = 0;
		private var vy:Number = 0;
		private var bounce:Number = -0.7;
		private var gravity:Number = 0.5;
		
		private var oldX:Number;
		private var oldY:Number;
		
		public function dragAndMove1():void
		{
			init();
		}
		
		private function init():void
		{
			stage.align = StageAlign.LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			ball = new Ball;
			addChild(ball);
			ball.x = stage.stageWidth / 2;
			ball.y = stage.stageHeight / 2;
			vx = Math.random() * 10 - 5;
			vy = -10;
			addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		
		private function onEnterFrame(e:Event):void
		{
			vy += gravity;
			ball.x += vx;
			ball.y += vy;
			var left:Number = 0;
			var right:Number = stage.stageWidth;
			var top:Number = 0;
			var bottom:Number = stage.stageHeight;
			if (ball.x + ball.radius > right) {
				ball.x = right - ball.radius;
				vx *= bounce;
			}else if (ball.x - ball.radius < left) {
				ball.x = left + ball.radius;
				vx *= bounce;
			}
			if (ball.y + ball.radius > bottom) {
				ball.y = bottom - ball.radius;
				vy *= bounce;
			}else if(ball.y - ball.radius < top) {
				ball.y = top + ball.radius;
				vy *= bounce;
			}
		}
		
		private function onMouseDown(e:MouseEvent):void
		{
			oldX = ball.x;
			oldY = ball.y;
			
		    stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			ball.startDrag();
			removeEventListener(Event.ENTER_FRAME, onEnterFrame);
			
			addEventListener(Event.ENTER_FRAME, trackVelocity);
		}
		
		private function trackVelocity(e:Event):void
		{
			vx = ball.x - oldX;
			vy = ball.y - oldY;
			oldX = ball.x;
			oldY = ball.y;
		}
		
		private function onMouseUp(e:MouseEvent):void
		{
		    stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			ball.stopDrag();
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
			
			removeEventListener(Event.ENTER_FRAME, trackVelocity);
		}
		
	}
	
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics