WEB开发网
开发学院图形图像Flash flash 绘图API:剑归宗 阅读

flash 绘图API:剑归宗

 2010-03-02 00:00:00 来源:WEB开发网   
核心提示: 下面乱剑一堆哈哈,这一个和之前一篇关于粒子爆效果原理是一样的,flash 绘图API:剑归宗(5),采用Math.atan2的方法处理运动方面很多角度问题,应用很广泛第四步:对剑的分布进行改造有时候可以改变对图形的分布位置也能够创造出不一样的东西,我们可以对其进行改造看看效果如何timer=ne

下面乱剑一堆哈哈。这一个和之前一篇关于粒子爆效果原理是一样的,采用Math.atan2的方法处理运动方面很多角度问题。应用很广泛

flash 绘图API:剑归宗

第四步:对剑的分布进行改造

有时候可以改变对图形的分布位置也能够创造出不一样的东西。采用圆 采用二维矩阵,都可以实现到。

下面是另外一个版本,采用的复制的手法不一样,有时候采用

循环能够一次性看到全貌,但是有时候采用时间错开,会看到不一样的过程。Timer 类能够实现到时间错开的过程。我们可以对其进行改造看看效果如何

timer=new Timer(100);
timer.addEventListener(TimerEvent.TIMER,onTimer);
private function onTimer(event:TimerEvent):void
{
  按时间间隔创建对象,能够看到创建的过程。
}

flash 绘图API:剑归宗

查看原图(大图)

下面为代码清单。

   1. package   
   2. {  
   3.     //剑归宗  
   4.   
   5.     import flash.display.Sprite;  
   6.     import flash.events.*;  
   7.     import flash.display.DisplayObject;  
   8.     import flash.utils.Timer;  
   9.     import flash.geom.Point;  
  10.   
  11.     public class Main extends Sprite  
  12.     {  
  13.         private var list:Array=new Array();  
  14.         private var Speed:int=10;//飞行速度  
  15.         private var contain:Sprite=new Sprite();  
  16.         private var num:int=20;  
  17.         private var timer:Timer;  
  18.         private var count:int=-1;  
  19.         private var key:Boolean=true;  
  20.         private var key2:Boolean=true;  
  21.         private var point:Point;//记录鼠标一个点  
  22.         public function Main()  
  23.         {  
  24.             addChild(contain);  
  25.             stage.addEventListener(MouseEvent.CLICK,onClick);  
  26.             timer=new Timer(100);  
  27.             timer.addEventListener(TimerEvent.TIMER,onTimer);  
  28.         }  
  29.         private function onTimer(event:TimerEvent):void  
  30.         {  
  31.             count++;  
  32.             var mysword:Sword=new Sword();  
  33.             contain.addChild(mysword);  
  34.             //mysword.x=point.x+Math.cos(count*2*Math.PI/num)*150;  
  35.             //mysword.y=point.y+Math.sin(count*2*Math.PI/num)*150;  
  36.             mysword.x=50+Math.random()*60;  
  37.             mysword.y=(count+1)*20;  
  38.             list.push(mysword);  
  39.             var angle:Number=Math.atan2(point.y-mysword.y,point.x-mysword.x);//角度  
  40.             mysword.angle=angle;  
  41.             //mysword.rotation=angle*180/Math.PI-90;  
  42.             mysword.rotation=-90;             
  43.             if (count==num)  
  44.             {  
  45.                 timer.stop();  
  46.                 key=true;  
  47.                 count=-1;  
  48.                 point=null;  
  49.                 for (var i:int=0; i<=num; i++)  
  50.                 {  
  51.                     list[i].addEventListener(Event.ENTER_FRAME,Run);//进行运动  
  52.                 }  
  53.             }  
  54.         }  
  55.         //创建一把剑  
  56.         private function onClick(event:MouseEvent):void  
  57.         {  
  58.             if (key)  
  59.             {  
  60.                 while (list.length>0)  
  61.                 {  
  62.                     list.pop();  
  63.                 }  
  64.                 timer.start();  
  65.                 key=false;  
  66.                 point=new Point(event.localX ,event.localY);//记录坐标点的位置  
  67.             }  
  68.             //for (var i:int=0; i<num; i++)  
  69.             //{  
  70.             //var mysword:Sword=new Sword();  
  71.             //contain.addChild(mysword);  
  72.             //mysword.x=mouseX+Math.cos(i*2*Math.PI/num)*150;  
  73.             //mysword.y=mouseY+Math.sin(i*2*Math.PI/num)*150;  
  74.             //list.push(mysword);  
  75.             //var angle:Number=Math.atan2(mouseY-mysword.y,mouseX-mysword.x);//角度  
  76.             //mysword.angle=angle;  
  77.             //mysword.rotation=angle*180/Math.PI-90;  
  78.             //mysword.addEventListener(Event.ENTER_FRAME,Run);//进行运动  
  79.             //}  
  80.   
  81.         }  
  82.         //运动  
  83.         private function Run(event:Event):void  
  84.         {  
  85.             var vx:Number=Math.cos(event.currentTarget.angle)*Speed;  
  86.             var vy:Number=Math.sin(event.currentTarget.angle)*Speed;  
  87.             event.currentTarget.x+=vx;  
  88.             event.currentTarget.y+=vy;  
  89.             if (event.currentTarget.x>stage.stageWidth||event.currentTarget.x<0||event.currentTarget.y<0||  
  90.             event.currentTarget.y>stage.stageHeight  
  91.             )  
  92.             {  
  93.                 if (event.currentTarget!=null)  
  94.                 {  
  95.                     event.currentTarget.removeEventListener(Event.ENTER_FRAME,Run);  
  96.                     contain.removeChild(DisplayObject(event.currentTarget));  
  97.                 }  
  98.             }  
  99.         }  
 100.     }  
 101. }  
 102.   
 103. import flash.display.Sprite;  
 104. //描绘一把剑  
 105. internal class Sword extends Sprite  
 106. {  
 107.     private var pen:Sprite=new Sprite();  
 108.     public var angle:Number=0;  
 109.     private var array:Array=[ [50,0],  
 110.       [50,50],  
 111.       [20,50],  
 112.       [20,60],  
 113.       [45,60],  
 114.       [45,300],  
 115.       [65,330],  
 116.       [75,300],  
 117.       [75,60],  
 118.       [105,60],  
 119.       [105,50],  
 120.       [70,50],  
 121.       [70,0],  
 122.       [50,0]  
 123.      ];  
 124.     public function Sword()  
 125.     {  
 126.         init();  
 127.     }  
 128.     private function init():void  
 129.     {  
 130.         addChild(pen);  
 131.         pen.graphics.lineStyle(1,0xffffff);  
 132.         pen.graphics.moveTo(array[0][0],array[0][1]);  
 133.         for (var i:int=0; i<array.length; i++)  
 134.         {  
 135.             pen.graphics.lineTo(array[i][0],array[i][1]);  
 136.         }  
 137.         pen.graphics.drawCircle(60,-11,12);//绘制剑中心  
 138.         pen.graphics.drawCircle(60,60,14);  
 139.         pen.graphics.beginFill(0xff00ff);  
 140.         pen.graphics.drawCircle(60,60,5);  
 141.         pen.graphics.endFill();  
 142.         pen.graphics.moveTo(60,60);  
 143.         pen.graphics.lineTo(65,330);  
 144.         pen.scaleX=pen.scaleY=0.3;  
 145.     }  
 146. }  

上一页  1 2 3 4 5 

Tags:flash 绘图 API

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接