※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


forked from : alumican_net's Clifford Attractor [diff(26)]

FORKED
  1. // forked from alumican_net's Clifford Attractor Dynamic ver.
  2. /**
  3.  * みんな大好き、ストレンジアトラクタ。 クリックでリスタート。
  4.  *
  5.  * セルフフォークで、パラメータが時間と共に変わるバージョン。
  6.  * これは好みが分かれるところですねえ。
  7.  * 
  8.  * 結構動くのでパーティクル数を増やしました。重いですか?
  9.  *
  10.  * 1点に収束してしまうと、その後パラメータが動いてもパーティクルが拡散しづらくなるので、
  11.  * 毎フレームパーティクルの座標値にわずかな乱数を加えています。
  12.  * 
  13.  * @author alumican.net
  14.  */
  15. package {
  16.     import flash.display.Bitmap;
  17.     import flash.display.BitmapData;
  18.     import flash.events.Event;
  19.     import flash.events.MouseEvent;
  20.     import flash.display.Sprite;
  21.     import flash.filters.BlurFilter;
  22.     import flash.geom.ColorTransform;
  23.     import flash.geom.Point;
  24.     import com.flashdynamix.utils.SWFProfiler;
  25.     
  26.     public class FlashTest extends Sprite {
  27.         private const ZEROS:Point = new Point(00);
  28.         
  29.         //パーティクル数
  30.         private const N:uint = 20000;
  31.         
  32.         //パラメータ群
  33.         private var _a:Number;
  34.         private var _b:Number;
  35.         private var _c:Number;
  36.         private var _d:Number;
  37.         
  38.         private var _va:Number = 1.0;
  39.         private var _vb:Number = 1.0;
  40.         private var _vc:Number = 1.0;
  41.         private var _vd:Number = 1.0;
  42.         
  43.         //linked listの先頭インスタンス
  44.         private var _head:Particle;
  45.         
  46.         //描画用
  47.         private var _canvas:BitmapData;
  48.         private var _w:uint;
  49.         private var _h:uint;
  50.         
  51.         //エフェクト用
  52.         private var _blur:BlurFilter = new BlurFilter(221);
  53.         private var _trans:ColorTransform = new ColorTransform(0.950.950.95);
  54.         
  55.         //--------------------------------------------------
  56.         //コンストラクタ
  57.         public function FlashTest() {
  58.             Wonderfl.disable_capture();
  59.                         
  60.             _w = stage.stageWidth;
  61.             _h = stage.stageHeight;
  62.             
  63.             //パーティクル生成
  64.             var o:Particle = _head = new Particle();
  65.             for (var i:uint = 0; i < N; ++i) {
  66.                 o = o.next = new Particle();
  67.             }
  68.             
  69.             //描画用BitmapData生成
  70.             _canvas = new BitmapData(_w, _h, false, 0x000000);
  71.             addChild(new Bitmap(_canvas));
  72.             
  73.             //イベントリスナ登録
  74.             addEventListener(Event.ENTER_FRAME, _update);
  75.             stage.addEventListener(MouseEvent.CLICK, _reset);
  76.             
  77.             //パラメータ群の初期化
  78.             _reset();
  79.             
  80.             //プロファイラの表示
  81.             SWFProfiler.init(this);
  82.         }
  83.         
  84.         //--------------------------------------------------
  85.         //パラメータ群の再設定
  86.         private function _reset(e:MouseEvent = null):void {
  87.             _canvas.fillRect(_canvas.rect, 0x000000);
  88.             
  89.             //パラメータの再設定と調整
  90.             
  91.             //パーティクルを分散させる
  92.             var p:Particle = _head;
  93.             do {
  94.                 p.x0 = (Math.random() - 0.5) * 2;
  95.                 p.y0 = (Math.random() - 0.5) * 2;
  96.             }
  97.             while (p = p.next);
  98.         }
  99.         
  100.         //--------------------------------------------------
  101.         //毎フレーム更新
  102.         private function _update(e:Event):void {
  103.             _canvas.lock();
  104.             
  105.             //パーティクル
  106.             var p:Particle = _head;
  107.             do {
  108.                 //座標の更新
  109.                 p.x1 = Math.sin(_a * p.y0) + _c * Math.cos(_a * p.x0) + Math.random() * 0.001;
  110.                 p.y1 = Math.sin(_b * p.x0) + _d * Math.cos(_b * p.y0) + Math.random() * 0.001;
  111.                 p.x0 = p.x1;
  112.                 p.y0 = p.y1;
  113.                 
  114.                 //描画
  115.                 _canvas.setPixel(_w / 2 + p.x1 * 70, _h / 2 + p.y1 * 70, 0xffffff);
  116.             }
  117.             while (p = p.next);
  118.             
  119.             //エフェクト
  120.             _canvas.applyFilter(_canvas, _canvas.rect, ZEROS, _blur);
  121.             _canvas.colorTransform(_canvas.rect, _trans);
  122.             
  123.             _canvas.unlock();
  124.             
  125.             //パラメータ更新
  126.             if (_a < -3.0) _va = 1.0 else if (_a > 3.0) _va = -1.0;
  127.             if (_b < -3.0) _vb = 1.0 else if (_b > 3.0) _vb = -1.0;
  128.             if (_c < -3.0) _vc = 1.0 else if (_c > 3.0) _vc = -1.0;
  129.             if (_d < -3.0) _vd = 1.0 else if (_d > 3.0) _vd = -1.0;
  130.             _a += _va * 0.010;
  131.             _b += _vb * 0.008;
  132.             _c += _vc * 0.004;
  133.             _d += _vd * 0.006;
  134.         }
  135.     }
  136. }
  137. //--------------------------------------------------
  138. //パーティクルクラス
  139. internal class Particle {
  140.     public var x1:Number;
  141.     public var y1:Number;
  142.     public var x0:Number;
  143.     public var y0:Number;
  144.     public var next:Particle;
  145. }
noswf
  1. /**
  2.  * Clifford Attractor.
  3.  * 
  4.  * x' = sin(a * y) + c * cos(a * x)
  5.  * y' = sin(b * x) + d * cos(b * y)
  6.  * 
  7.  * @author alumican.net
  8.  */
  9. package {
  10.     import flash.display.Bitmap;
  11.     import flash.display.BitmapData;
  12.     import flash.display.BlendMode;
  13.     import flash.filters.BlurFilter;
  14.     import flash.events.Event;
  15.     import flash.events.MouseEvent;
  16.     import flash.display.Sprite;
  17.     import flash.geom.ColorTransform;
  18.     import flash.geom.Rectangle;
  19.     import flash.geom.Point;
  20.     import org.libspark.betweenas3.easing.*;
  21.     import com.flashdynamix.utils.SWFProfiler;
  22.     
  23.     public class CliffordAttractorDynamic extends Sprite
  24.     {
  25.         //----------------------------------------
  26.         //CLASS CONSTANTS
  27.         
  28.         //パーティクル数
  29.         private const N:uint = 15000;
  30.         
  31.         private const W:uint = 465;
  32.         private const H:uint = 465;
  33.         
  34.         private const W1_2:uint = uint(W / 2);
  35.         private const H1_2:uint = uint(H / 2);
  36.         
  37.         private const RECT:Rectangle = new Rectangle(00, W, H);
  38.         private const ZEROS:Point = new Point(00);
  39.         
  40.         
  41.         
  42.         
  43.         
  44.         //----------------------------------------
  45.         //VARIABLES
  46.         
  47.         private var _a:Number;
  48.         private var _b:Number;
  49.         private var _c:Number;
  50.         private var _d:Number;
  51.         
  52.         private var _va:Number;
  53.         private var _vb:Number;
  54.         private var _vc:Number;
  55.         private var _vd:Number;
  56.         
  57.         private var _head:Particle;
  58.         
  59.         private var _canvas:BitmapData;
  60.         private var _buffer:BitmapData;
  61.         
  62.         private var _blurFilter:BlurFilter;
  63.         private var _colorTransForm:ColorTransform;
  64.         
  65.         private var _gradation:Gradation;
  66.         
  67.         
  68.         
  69.         
  70.         
  71.         //--------------------------------------------------
  72.         //METHODS
  73.         
  74.         public function CliffordAttractorDynamic():void
  75.         {
  76.             Wonderfl.disable_capture();
  77.             
  78.             addChild(new Bitmap(_canvas = new BitmapData(W, H, false, 0x000000)));
  79.             _buffer = _canvas.clone();
  80.             
  81.             _gradation = new Gradation(0xcc0000, 0xcc6000, 0xcccc00, 0x00cc00, 0x00cccc, 0x0000cc, 0x6000cc);
  82.             _gradation.setEasing(Linear.easeNone);
  83.             
  84.             _blurFilter = new BlurFilter(16161);
  85.             _colorTransForm = new ColorTransform(0.950.950.95);
  86.             
  87.             var o:Particle = _head = new Particle();
  88.             for (var i:uint = 0; i < N; ++i)
  89.             {
  90.                 o = o.next = new Particle();
  91.             }
  92.             
  93.             addEventListener(Event.ENTER_FRAME, _update);
  94.             stage.addEventListener(MouseEvent.CLICK, _reset);
  95.             
  96.             SWFProfiler.init(this);
  97.             
  98.             _reset();
  99.         }
  100.         
  101.         private function _reset(e:MouseEvent = null):void
  102.         {
  103.             _a = (Math.random() - 0.5) * 3;
  104.             _b = (Math.random() - 0.5) * 3;
  105.             _c = (Math.random() - 0.5) * 6;
  106.             _d = (Math.random() - 0.5) * 6;
  107.             if (Math.abs(_a) < 0.4) _a += 0.8 * _a / Math.abs(_a);
  108.             if (Math.abs(_b) < 0.4) _b += 0.8 * _b / Math.abs(_b);
  109.             if (Math.abs(_c) < 1.0) _c += 1.0 * _c / Math.abs(_c);
  110.             if (Math.abs(_d) < 1.0) _d += 1.0 * _d / Math.abs(_d);
  111.             
  112.             _va = 0.010;
  113.             _vb = 0.008;
  114.             _vc = 0.006;
  115.             _vd = 0.004;
  116.             
  117.             var p:Particle = _head;
  118.             do {
  119.                 p.x1 = p.x0 = (Math.random() - 0.5) * 2;
  120.                 p.y1 = p.y0 = (Math.random() - 0.5) * 2;
  121.             }
  122.             while (p = p.next);
  123.         }
  124.         
  125.         private function _update(e:Event):void
  126.         {
  127.             var p:Particle = _head,
  128.                 vx:Number,
  129.                 vy:Number;
  130.             
  131.             _buffer.lock();
  132.             _buffer.fillRect(RECT, 0x000000);
  133.             do {
  134.                 p.x1 = Math.sin(_a * p.y0) + _c * Math.cos(_a * p.x0) + Math.random() * 0.001;
  135.                 p.y1 = Math.sin(_b * p.x0) + _d * Math.cos(_b * p.y0) + Math.random() * 0.001;
  136.                 
  137.                 vx = p.x1 - p.x0;
  138.                 vy = p.y1 - p.y0;
  139.                 
  140.                 p.x0 = p.x1;
  141.                 p.y0 = p.y1;
  142.                 
  143.                 _buffer.setPixel(W1_2 + p.x1 * 70, H1_2 + p.y1 * 70, _gradation.getColor((vx * vx + vy * vy) * 0.1) );
  144.             }
  145.             while (p = p.next);
  146.             _buffer.unlock();
  147.             
  148.             _canvas.lock();
  149.             _canvas.colorTransform(RECT, _colorTransForm);
  150.             _canvas.applyFilter(_canvas, RECT, ZEROS, _blurFilter);
  151.             _canvas.draw(_buffer, nullnull, BlendMode.ADD);
  152.             _canvas.unlock();
  153.             
  154.             if (_a < -3.0 || _a > 3.0) _va *= -1;
  155.             if (_b < -3.0 || _b > 3.0) _vb *= -1;
  156.             if (_c < -3.0 || _c > 3.0) _vc *= -1;
  157.             if (_d < -3.0 || _d > 3.0) _vd *= -1;
  158.             _a += _va;
  159.             _b += _vb;
  160.             _c += _vc;
  161.             _d += _vd;
  162.         }
  163.     }
  164. }
  165. //--------------------------------------------------
  166. //1ファイル内にクラスを3つ以上作成するとCS4でビルドできなくなるバグ対策クラス
  167. internal class EmptyClass { }
  168. //--------------------------------------------------
  169. //パーティクル
  170. internal class Particle extends EmptyClass
  171. {
  172.     public var x1:Number;
  173.     public var y1:Number;
  174.     public var x0:Number;
  175.     public var y0:Number;
  176.     public var next:Particle;
  177. }
  178. //--------------------------------------------------
  179. /**
  180.  * @author saqoosha
  181.  * @see http://wonderfl.net/code/7ed2d650b9d513edf9a499fb704c19ecb7aa4694
  182.  */
  183. import frocessing.color.ColorLerp;
  184. import org.libspark.betweenas3.core.easing.IEasing;
  185. import org.libspark.betweenas3.easing.Linear;
  186. class Gradation extends EmptyClass
  187. {
  188.     private var _colors:Array;
  189.     private var _easing:IEasing;
  190.     
  191.     public function Gradation(...args):void
  192.     {
  193.         _colors = args.concat();
  194.         _easing = Linear.linear;
  195.     }
  196.     
  197.     public function setEasing(easing:IEasing):void
  198.     {
  199.         _easing = easing;
  200.     }
  201.     
  202.     public function getColor(position:Number):uint
  203.     {
  204.         position = (position < 0 ? 0 : position > 1 ? 1 : position) * (_colors.length - 1);
  205.         var idx:int = position;
  206.         var alpha:Number = _easing.calculate(position - idx, 011);
  207.         if (alpha == 0)
  208.         {
  209.             return _colors[idx];
  210.         }
  211.         else
  212.         {
  213.             return ColorLerp.lerp(_colors[idx], _colors[idx + 1], alpha);
  214.         }
  215.     }
  216. }
noswf
  1. // forked from alumican_net's Strange ∀ttractor Dynamic
  2. /**
  3.  * みんな大好き、ストレンジアトラクタ。 クリックでリスタート。
  4.  *
  5.  * セルフフォークで、パラメータが時間と共に変わるバージョン。
  6.  * これは好みが分かれるところですねえ。
  7.  * 
  8.  * 結構動くのでパーティクル数を増やしました。重いですか?
  9.  *
  10.  * 一点に収束してしまうと、パラメータを変更してもダイナミック動きが
  11.  * 無くなってつまらないので、毎フレーム座標値に多少乱数を加えています。
  12.  * 
  13.  * @author alumican.net
  14.  */
  15. package {
  16.     import flash.display.Bitmap;
  17.     import flash.display.BitmapData;
  18.     import flash.events.Event;
  19.     import flash.events.MouseEvent;
  20.     import flash.display.Sprite;
  21.     import flash.filters.BlurFilter;
  22.     import flash.geom.ColorTransform;
  23.     import flash.geom.Point;
  24.     import com.flashdynamix.utils.SWFProfiler;
  25.     
  26.     [SWF(frameRate="60")]
  27.     public class FlashTest extends Sprite {
  28.         private const ZEROS:Point = new Point(00);
  29.         
  30.         //パーティクル数
  31.         private const N:uint = 10000;
  32.         
  33.         //パラメータ群
  34.         private var _a:Number;
  35.         private var _b:Number;
  36.         private var _c:Number;
  37.         private var _d:Number;
  38.         
  39.         private var _va:Number = 1.0;
  40.         private var _vb:Number = 1.0;
  41.         private var _vc:Number = 1.0;
  42.         private var _vd:Number = 1.0;
  43.         
  44.         //linked listの先頭インスタンス
  45.         private var _head:Particle;
  46.         
  47.         //描画用
  48.         private var _canvas:BitmapData;
  49.         private var _w:uint;
  50.         private var _h:uint;
  51.         
  52.         //エフェクト用
  53.         private var _blur:BlurFilter = new BlurFilter(221);
  54.         private var _trans:ColorTransform = new ColorTransform(0.950.950.95);
  55.         
  56.         //--------------------------------------------------
  57.         //コンストラクタ
  58.         public function FlashTest() {
  59.             Wonderfl.disable_capture();
  60.                         
  61.             _w = stage.stageWidth;
  62.             _h = stage.stageHeight;
  63.             
  64.             //パーティクル生成
  65.             var o:Particle = _head = new Particle();
  66.             for (var i:uint = 0; i < N; ++i) {
  67.                 o = o.next = new Particle();
  68.             }
  69.             
  70.             //描画用BitmapData生成
  71.             _canvas = new BitmapData(_w, _h, false, 0x000000);
  72.             addChild(new Bitmap(_canvas));
  73.             
  74.             //イベントリスナ登録
  75.             addEventListener(Event.ENTER_FRAME, _update);
  76.             stage.addEventListener(MouseEvent.CLICK, _reset);
  77.             
  78.             //パラメータ群の初期化
  79.             _reset();
  80.             
  81.             //プロファイラの表示
  82.             SWFProfiler.init(this);
  83.         }
  84.         
  85.         //--------------------------------------------------
  86.         //パラメータ群の再設定
  87.         private function _reset(e:MouseEvent = null):void {
  88.             _canvas.fillRect(_canvas.rect, 0x000000);
  89.             
  90.             //パラメータの再設定と調整
  91.             _a = (Math.random() - 0.5) * 3;
  92.             _b = (Math.random() - 0.5) * 3;
  93.             _c = (Math.random() - 0.5) * 6;
  94.             _d = (Math.random() - 0.5) * 6;
  95.             if (Math.abs(_a) < 0.8) _a += 0.8 * _a / Math.abs(_a);
  96.             if (Math.abs(_b) < 0.8) _b += 0.8 * _b / Math.abs(_b);
  97.             if (Math.abs(_c) < 1.0) _c += 1.0 * _c / Math.abs(_c);
  98.             if (Math.abs(_d) < 1.0) _d += 1.0 * _d / Math.abs(_d);
  99.             
  100.             //パーティクルを分散させる
  101.             var p:Particle = _head;
  102.             do {
  103.                 p.x0 = (Math.random() - 0.5) * 2;
  104.                 p.y0 = (Math.random() - 0.5) * 2;
  105.             }
  106.             while (p = p.next);
  107.             
  108.             _t = -Math.random() * 2009;
  109.         }
  110.         
  111.         private var _t : Number;
  112.         
  113.         //--------------------------------------------------
  114.         //毎フレーム更新
  115.         private function _update(e:Event):void {
  116.             _canvas.lock();
  117.             
  118.             var c : uint = 
  119.                 (Math.sin(_t) * 64 + 192) << 16 |
  120.                 (Math.sin(_t * 2) * 64 + 192) << 8 |
  121.                 (Math.sin(_t * 3) * 64 + 192) << 0;
  122.             _t += 0.01;
  123.             
  124.             //パーティクル
  125.             var p:Particle = _head;
  126.             var dx:Number;
  127.             var dy:Number;
  128.             do {
  129.                 //座標の更新
  130.                 dx = Math.sin(_a * p.y0) + _c * Math.cos(_a * p.x0) + Math.random() * 0.001;
  131.                 dy = Math.sin(_b * p.x0) + _d * Math.cos(_b * p.y0) + Math.random() * 0.001;
  132.                 p.x0 = dx;
  133.                 p.y0 = dy;
  134.                 
  135.                 //描画
  136.                 _canvas.setPixel(_w / 2 + dx * 70, _h / 2 + dy * 70, c);
  137.             }
  138.             while (p = p.next);
  139.             
  140.             //エフェクト
  141.             _canvas.applyFilter(_canvas, _canvas.rect, ZEROS, _blur);
  142.             _canvas.colorTransform(_canvas.rect, _trans);
  143.             
  144.             _canvas.unlock();
  145.             
  146.             //パラメータ更新
  147.             if (_a < -3.0) _va = 1.0 else if (_a > 3.0) _va = -1.0;
  148.             if (_b < -3.0) _vb = 1.0 else if (_b > 3.0) _vb = -1.0;
  149.             if (_c < -3.0) _vc = 1.0 else if (_c > 3.0) _vc = -1.0;
  150.             if (_d < -3.0) _vd = 1.0 else if (_d > 3.0) _vd = -1.0;
  151.             _a += _va * 0.010;
  152.             _b += _vb * 0.008;
  153.             _c += _vc * 0.004;
  154.             _d += _vd * 0.006;
  155.         }
  156.     }
  157. }
  158. //--------------------------------------------------
  159. //パーティクルクラス
  160. internal class Particle {
  161.     public var x0:Number;
  162.     public var y0:Number;
  163.     public var next:Particle;
  164. }
noswf
  1. // forked from alumican_net's Strange ∀ttractor Dynamic
  2. /**
  3.  * みんな大好き、ストレンジアトラクタ。 クリックでリスタート。
  4.  *
  5.  * セルフフォークで、パラメータが時間と共に変わるバージョン。
  6.  * これは好みが分かれるところですねえ。
  7.  * 
  8.  * 結構動くのでパーティクル数を増やしました。重いですか?
  9.  *
  10.  * 一点に収束してしまうと、パラメータを変更してもダイナミック動きが
  11.  * 無くなってつまらないので、毎フレーム座標値に多少乱数を加えています。
  12.  * 
  13.  * @author alumican.net
  14.  */
  15. package {
  16.     import flash.display.Bitmap;
  17.     import flash.display.BitmapData;
  18.     import flash.events.Event;
  19.     import flash.events.MouseEvent;
  20.     import flash.display.Sprite;
  21.     import flash.filters.BlurFilter;
  22.     import flash.geom.ColorTransform;
  23.     import flash.geom.Point;
  24.     import com.flashdynamix.utils.SWFProfiler;
  25.     
  26.     public class FlashTest extends Sprite {
  27.         private const ZEROS:Point = new Point(00);
  28.         
  29.         //パーティクル数
  30.         private const N:uint = 20000;
  31.         
  32.         //パラメータ群
  33.         private var _a:Number;
  34.         private var _b:Number;
  35.         private var _c:Number;
  36.         private var _d:Number;
  37.         
  38.         private var _va:Number = 1.0;
  39.         private var _vb:Number = 1.0;
  40.         private var _vc:Number = 1.0;
  41.         private var _vd:Number = 1.0;
  42.         
  43.         //linked listの先頭インスタンス
  44.         private var _head:Particle;
  45.         
  46.         //描画用
  47.         private var _canvas:BitmapData;
  48.         private var _w:uint;
  49.         private var _h:uint;
  50.         
  51.         //エフェクト用
  52.         private var _blur:BlurFilter = new BlurFilter(221);
  53.         private var _trans:ColorTransform = new ColorTransform(0.950.950.95);
  54.         
  55.         //--------------------------------------------------
  56.         //コンストラクタ
  57.         public function FlashTest() {
  58.             Wonderfl.disable_capture();
  59.                         
  60.             _w = stage.stageWidth;
  61.             _h = stage.stageHeight;
  62.             
  63.             //パーティクル生成
  64.             var o:Particle = _head = new Particle();
  65.             for (var i:uint = 0; i < N; ++i) {
  66.                 o = o.next = new Particle();
  67.             }
  68.             
  69.             //描画用BitmapData生成
  70.             _canvas = new BitmapData(_w, _h, false, 0x000000);
  71.             addChild(new Bitmap(_canvas));
  72.             
  73.             //イベントリスナ登録
  74.             addEventListener(Event.ENTER_FRAME, _update);
  75.             stage.addEventListener(MouseEvent.CLICK, _reset);
  76.             
  77.             //パラメータ群の初期化
  78.             _reset();
  79.             
  80.             //プロファイラの表示
  81.             SWFProfiler.init(this);
  82.         }
  83.         
  84.         //--------------------------------------------------
  85.         //パラメータ群の再設定
  86.         private function _reset(e:MouseEvent = null):void {
  87.             _canvas.fillRect(_canvas.rect, 0x000000);
  88.             
  89.             //パラメータの再設定と調整
  90.             _a = (Math.random() - 0.5) * 3;
  91.             _b = (Math.random() - 0.5) * 3;
  92.             _c = (Math.random() - 0.5) * 6;
  93.             _d = (Math.random() - 0.5) * 6;
  94.             if (Math.abs(_a) < 0.8) _a += 0.8 * _a / Math.abs(_a);
  95.             if (Math.abs(_b) < 0.8) _b += 0.8 * _b / Math.abs(_b);
  96.             if (Math.abs(_c) < 1.0) _c += 1.0 * _c / Math.abs(_c);
  97.             if (Math.abs(_d) < 1.0) _d += 1.0 * _d / Math.abs(_d);
  98.             
  99.             //パーティクルを分散させる
  100.             var p:Particle = _head;
  101.             do {
  102.                 p.x0 = (Math.random() - 0.5) * 2;
  103.                 p.y0 = (Math.random() - 0.5) * 2;
  104.             }
  105.             while (p = p.next);
  106.         }
  107.         
  108.         //--------------------------------------------------
  109.         //毎フレーム更新
  110.         private function _update(e:Event):void {
  111.             _canvas.lock();
  112.             
  113.             //パーティクル
  114.             var p:Particle = _head;
  115.             do {
  116.                 //座標の更新
  117.                 p.x1 = Math.sin(_a * p.y0) + _c * Math.cos(_a * p.x0) + Math.random() * 0.001;
  118.                 p.y1 = Math.sin(_b * p.x0) + _d * Math.cos(_b * p.y0) + Math.random() * 0.001;
  119.                 p.x0 = p.x1;
  120.                 p.y0 = p.y1;
  121.                 
  122.                 //描画
  123.                 //_canvas.setPixel(_w / 2 + p.x1 * 70, _h / 2 + p.y1 * 70, (_a*_b*_c_d)/2000*0xffffff);
  124.                 _canvas.setPixel(_w / 2 + p.x1 * 70, _h / 2 + p.y1 * 70, _c*0xffffff);
  125.             }
  126.             while (p = p.next);
  127.             
  128.             //エフェクト
  129.             _canvas.applyFilter(_canvas, _canvas.rect, ZEROS, _blur);
  130.             _canvas.colorTransform(_canvas.rect, _trans);
  131.             
  132.             _canvas.unlock();
  133.             
  134.             //パラメータ更新
  135.             if (_a < -3.0) _va = 1.0 else if (_a > 3.0) _va = -1.0;
  136.             if (_b < -3.0) _vb = 1.0 else if (_b > 3.0) _vb = -1.0;
  137.             if (_c < -3.0) _vc = 1.0 else if (_c > 3.0) _vc = -1.0;
  138.             if (_d < -3.0) _vd = 1.0 else if (_d > 3.0) _vd = -1.0;
  139.             _a += _va * 0.010;
  140.             _b += _vb * 0.008;
  141.             _c += _vc * 0.004;
  142.             _d += _vd * 0.006;
  143.         }
  144.     }
  145. }
  146. //--------------------------------------------------
  147. //パーティクルクラス
  148. internal class Particle {
  149.     public var x1:Number;
  150.     public var y1:Number;
  151.     public var x0:Number;
  152.     public var y0:Number;
  153.     public var next:Particle;
  154. }
noswf
Get Adobe Flash Player