首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

AS3 Flex的一个贝塞尔(Bezier)曲线图形范例

2012-11-18 
AS3 Flex的一个贝塞尔(Bezier)曲线图形实例代码如下:CurveDemo.as?package org.luosijin.curve{import Fla

AS3 Flex的一个贝塞尔(Bezier)曲线图形实例

代码如下:

CurveDemo.as

?

package org.luosijin.curve  {   import Flash.display.Sprite;   import flash.events.Event;   import flash.events.KeyboardEvent;   import flash.events.TimerEvent;   import flash.filters.GlowFilter;   import flash.geom.Point;   import flash.utils.Timer;      [SWF(width="730", height="300", backgroundColor="0x000000", frameRate="24")]    public class CurveDemo extends Sprite   {    private var _radius:int = 100;       //定义半径     private var _numPoints:Number = 30; //定义点数量     private var _points:Array = new Array();     private var _pre_r:Number = Math.PI * 0.0001;     private var _centX:Number = stage.stageWidth * 0.5;     private var _centY:Number = stage.stageHeight * 0.5;     private var _myTimer:Timer = new Timer(10, 0);     private var _color:Number = 0xACD8A4; //初始化颜色     private var _radians:Number = 0; //初始弧度值     private var _gf:GlowFilter = new GlowFilter();      public function CurveDemo()    {     _myTimer.addEventListener(TimerEvent.TIMER,onTimerHandler);     _myTimer.start();     //定义滤镜参数      _gf.blurX = _gf.blurY = 32;     _gf.color = 0xCBDAFF;     this.filters = [_gf];          stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);    }    private function onTimerHandler(evt:Event):void   {     run();    }    private function run():void   {     graphics.clear();     _points = [];     _radians += _pre_r;          for(var i:int=1;i<_numPoints;i+=1)     {      var p:Point = new Point();      //重点部分正余弦作用       p.x = _centX + Math.cos(_radians*i)*i*5;      p.y = _centY + Math.sin(_radians*i)*i*5;      _points.push(p);     }     graphics.beginFill(_color,0.2);     graphics.lineStyle(1,_color,0.8);     graphics.moveTo(_centX,_centY);     for(i=2;i<_numPoints-2;i+=1)     {      graphics.curveTo(_points[i-1].x,_points[i-1].y,_points[i].x,_points[i].y);      graphics.curveTo(_points[i+1].x,_points[i+1].y,_centX,_centY);     }     graphics.endFill();    }    private function onKeyDown(evt:KeyboardEvent):void     {      switch (evt.keyCode)      {       case 97:        _color = 0x71CA65;        break;       case 98:        _color = -0xFF3300;        break;       case 99:        _color = 0xB5B0F3;        break;       case 100:        _color = 0xFA04C9;        break;       case 101:        _color = 0x62F6E5;        break;       case 102:        _color = 0xC07168;        break;       case 103:        _color = 0x75DE32;        break;       case 104:        _color = 0x32C1F0;        break;       case 105:        _color = 0x0285FF;        break;      }     }    }   } 

?

?

CurveDemo.as2

package org.luosijin.curve      {  import flash.display.*;       import flash.events.*;       import flash.filters.*;       import flash.geom.*;       import flash.utils.*;       [SWF(width="730", height="500", backgroundColor="0x000000", frameRate="24")]       public class CurveDemo2 extends Sprite       {        private var _radius:int = 100;        private var _numPoints:Number = 30;        private var _points:Array;        private var _pre_r:Number = 0.000314159;        private var _centX:Number;        private var _centY:Number;        private var _myTimer:Timer;        private var _color:Number = 165375;        private var _radians:Number = 0;        private var _gf:GlowFilter;        public function CurveDemo2()        {         _points = new Array();         _centX =900* 0.5;         _centY =600* 0.5;         _myTimer = new Timer(10, 0);         _gf = new GlowFilter();         _myTimer.addEventListener(TimerEvent.TIMER,onTimerHandler);         _myTimer.start();         var _loc_1:int;         _gf.blurY = 32;         _gf.blurX = _loc_1;         _gf.color = 165375;         filters = [_gf];        }// end function        private function onTimerHandler(param1:Event) : void       {         run();        }// end function        private function run() : void       {         var _loc_2:Point;         graphics.clear();         _points = [];         _radians = _radians + _pre_r;         var _loc_1:Number=0;         while (_loc_1 < _numPoints)         {          // label          _loc_2 = new Point();          _loc_2.x = _centX + Math.cos(_radians * _loc_1) * 140;          _loc_2.y = _centY + Math.sin(_radians * _loc_1) * 140;          _points.push(_loc_2);          _loc_1 = _loc_1 + 1;         }// end while         graphics.beginFill(_color, 0.2);         graphics.lineStyle(1, _color, 0.8);         graphics.moveTo(_centX, _centY);         _loc_1 = 2;         while(_loc_1 < _numPoints-2){          graphics.curveTo(_points[_loc_1-1].x, _points[_loc_1-1].y, _points[_loc_1].x, _points[_loc_1].y);          graphics.curveTo(_points[_loc_1 + 1].x, _points[_loc_1 + 1].y, _centX, _centY);          _loc_1 = _loc_1 + 1;         }         graphics.endFill();        }// end function       }      }

?

?

热点排行