守望者--AIR技术交流

标题: 物理连杆效果 [打印本页]

作者: 破晓    时间: 2015-7-15 14:16
标题: 物理连杆效果
http://swf.wonderfl.net/swf/usercode/8/8d/8d74/8d747fb60f4b74f9b118254b4965b20ab74791ea.swf?t=1436940588654


  1. package {
  2.     import flash.events.Event;
  3.     import flash.display.Sprite;
  4.     public class FlashTest extends Sprite {
  5.         public function FlashTest() {
  6.             
  7.             stage.addEventListener(Event.ENTER_FRAME, onEnter);
  8.         }//ctor
  9.         
  10.         public var gt:int =0;
  11.         
  12.         public function onEnter(e:Event):void
  13.         {
  14.             gt+=1;
  15.             var mx:Number; var my:Number;
  16.             mx = stage.mouseX; my = stage.mouseY;
  17.             
  18.             graphics.clear();
  19.             graphics.lineStyle(2, 0);
  20.             
  21.             var ax:Number; var ay:Number;
  22.             var bx:Number; var by:Number;
  23.             
  24.             var ta:Number;
  25.             ta = gt * 0.1;
  26.             
  27.             ax= 230; ay= 230;
  28.             bx= mx + Math.cos(ta)*32; by =my + Math.sin(ta)*32;
  29.             graphics.drawCircle(mx,my, 32);
  30.             graphics.moveTo(mx+Math.cos(ta)*32, my+Math.sin(ta)*32);
  31.             graphics.lineTo(mx+Math.cos(ta)*-32, my+Math.sin(ta)*-32);
  32.             
  33.             
  34.             var mag:Number;
  35.             var nx:Number; var ny:Number;
  36.             nx=bx-ax;ny=by-ay;
  37.             mag = Math.sqrt(nx*nx+ny*ny);
  38.             if (mag == 0) { mag =0.1; }
  39.             nx/=mag; ny/=mag;
  40.             
  41.             graphics.drawCircle(ax,ay, 8);
  42.             graphics.drawCircle(bx,by, 8);
  43.             //graphics.moveTo(ax,ay);
  44.             //graphics.lineTo(bx,by);
  45.             
  46.             var kx:Number; var ky:Number;
  47.             
  48.             kx = (bx+ax)*0.5 +ny*-16;
  49.             ky = (by+ay)*0.5 +nx* 16;
  50.             //graphics.drawCircle(kx,ky, 8);
  51.             
  52.             var i:int;
  53.             var dx:Number; var dy:Number;
  54.             var r:Number;
  55.             r = 64;

  56.             for(i=0;i<8;i++)
  57.             {         
  58.               if (i%2 == 0)
  59.               {    dx=kx-bx;dy=ky-by; }
  60.               else { dx=kx-ax;dy=ky-ay; }
  61.                 mag = Math.sqrt(dx*dx+dy*dy);
  62.                 if (mag == 0) { mag =0.1; }
  63.                 dx/=mag; dy/=mag;
  64.                 mag = r-mag; mag*=0.5;
  65.                 kx += dx*mag; ky += dy*mag;
  66.                
  67.            }//nexti

  68.             graphics.drawCircle(kx,ky, 8);
  69.             graphics.moveTo(ax,ay);
  70.             graphics.lineTo(kx,ky);
  71.             graphics.moveTo(kx,ky);
  72.             graphics.lineTo(bx,by);
  73.             
  74.         }//onenter
  75.         
  76.     }//classend

  77. }

复制代码



[attach]1220[/attach]


本文来自:http://wonderfl.net/c/kbmV

作者: lxz    时间: 2019-2-24 02:28
感谢分享!~




欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)