zoukankan      html  css  js  c++  java
  • 【碰撞回弹】

    /*
    舞台上有个mc
    */
    package 
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    
    	public class Bouncing extends Sprite
    	{
    		private var ball:Ball;
    		private var vx:Number;
    		private var vy:Number;
    		//弹力系数有所损耗所以为-0.7不计损耗为-1
    		private var bounce:Number = -0.7;
    
    		public function Bouncing()
    		{
    			init();
    		}
    
    		private function init():void
    		{
    			ball = new Ball  ;
    			ball.x = stage.stageWidth / 2;
    			ball.y = stage.stageHeight / 2;
    			vx = Math.random() * 20 - 10;
    			vy = Math.random() * 20 - 10;
    			addChild(ball);
    			addEventListener(Event.ENTER_FRAME,onEnter);
    		}
    
    		private function onEnter(e:Event):void
    		{
    			ball.x +=  vx;
    			ball.y +=  vy;
    			var left:Number = 50;
    			var right:Number = stage.stageWidth - 50;
    			var up:Number = 50;
    			var down:Number = stage.stageHeight - 50;
    			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 > down)
    			{
    				ball.y = down - ball.radius;
    				vy *=  bounce;
    			}
    			else if (ball.y - ball.radius < up)
    			{
    				ball.y = up + ball.radius;
    				vy *=  bounce;
    			}
    			
    			//判断ball碰到mc之后怎么办
    			if (ball.hitTestObject(mc))
    			{
    				var dx:Number = ball.x - mc.x;
    				var dy:Number = ball.y - mc.y;
    				var dist:Number = Math.sqrt(dx * dx + dy * dy);
    				var radians:Number = Math.atan2(dy,dx);//弧度
    				var drgress:Number=radians*180/Math.PI;//弧度转化成度
    				//(radians=drgress/(180/Math.PI)||radians=drgress/180*Math.PI)
    				//trace(drgress);
    				//vx = Math.cos(radians) * speed;
    				//vy = Math.sin(radians) * speed;
    				if(drgress<45&&drgress>-45)
    				{
    					ball.x=mc.x+mc.width/2+ball.width/2
    					vx *=  bounce;
    				}
    				else if ((drgress>-180&&drgress<-135)||(drgress<180&&drgress>135))
    				{
    					ball.x=mc.x-mc.width/2-ball.width/2
    					vx *=  bounce;
    				}
    				
    				if (drgress>-135&&drgress<-45)
    				{
    					ball.y=mc.y-mc.height/2-ball.height/2
    					vy *=  bounce;
    				}
    				else if(drgress<135&&drgress>45)
    				{
    					ball.y=mc.y+mc.height/2+ball.height/2
    					vy *=  bounce;
    				}
    			
    			}
    
    		}
    	}
    
    }
    
    package 
    {
    
    	import flash.display.Sprite;
    
    	public class Ball extends Sprite
    	{
    
    		public var radius:Number;
    		public var color:uint;
    
    		public function Ball(radius:Number=10,color:uint=0Xff0000)
    		{
    			this.radius = radius;
    			this.color = color;
    			draw();
    		}
    
    		public function draw():void
    		{
    			graphics.beginFill(color);
    			graphics.drawCircle(0,0,radius);
    			graphics.endFill();
    		}
    
    	}
    
    }
    
  • 相关阅读:
    java 截取pdf
    webService 发送soap请求,并解析返回的soap报文
    常用网址
    扫描文件夹下代码行数
    CodeMIrror 简单使用
    常用 linux 命令(部分)
    windows下RabbitMQ 监控
    一定要写的日志
    创业思路
    10月9日后计划
  • 原文地址:https://www.cnblogs.com/602147629/p/1992141.html
Copyright © 2011-2022 走看看