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

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

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


FORKED
  1. // forked from func09's Particles
  2. package {
  3.   
  4.   import flash.display.*;
  5.   import flash.events.*;
  6.   import flash.geom.*;
  7.   import flash.utils.*;
  8.   
  9.   /**
  10.   * Processingライクに描画するメインクラス
  11.   */
  12.   public class Particles extends Sprite {
  13.     var canvas:BitmapData;
  14.     var particleClasses:Array = [Particle,Particle2];
  15.     var particleClass:Class;
  16.     var particles:Array;
  17.     const numParticles:uint = 100;
  18.     
  19.     /**
  20.     * コンストラクタ
  21.     */
  22.     public function Particles() {
  23.       setUp();
  24.     }
  25.     
  26.     /**
  27.     * 初期化
  28.     */
  29.     public function setUp():void {
  30.       canvas = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0xFFFFFFFF );
  31.       addChild( new Bitmap( canvas ) );
  32.       particles = new Array();
  33.       forvar i:int=0; i<numParticles; i++ ){
  34.         particleClass = particleClasses[ i % 2 ];
  35.         var _:Particle = new particleClass( stage ) as Particle;
  36.         _.p.x = Math.random() * stage.stageWidth;
  37.         _.p.y = Math.random() * stage.stageHeight;
  38.         _.v.x = Math.random() * 2 - 1;
  39.         _.v.y = Math.random() * 2 - 1;
  40.         particles.push(_);
  41.       }
  42.       addEventListener( Event.ENTER_FRAME, draw );
  43.       stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseHandle );
  44.       stage.addEventListener( MouseEvent.MOUSE_UP, mouseHandle );
  45.     }
  46.     
  47.     /**
  48.     * 描画処理
  49.     * @param    event
  50.     */
  51.     public function draw( event:Event ):void {
  52.       canvas.draw( canvas, nullnew ColorTransform( 0000, 0xFF, 0xFF, 0xFF, 0xFF * .2 ),null,null,false);
  53.       particles.forEach(
  54.         function( particle:Particle, index:int, array:Array ){
  55.           particle.move();
  56.           particle.render( canvas );
  57.         }
  58.       );
  59.     }
  60.     
  61.     /**
  62.     * マウスイベントハンドル
  63.     * @param    event
  64.     */
  65.     public function mouseHandle( event:MouseEvent ):void {
  66.       switch( event.type ){
  67.         case MouseEvent.MOUSE_DOWN:
  68.           particles.forEach(
  69.             function( particle:*, index:int, array:Array ){
  70.               particle.isPressed = true;
  71.             }
  72.           );
  73.         break;
  74.         case MouseEvent.MOUSE_UP:
  75.           particles.forEach(
  76.             function( particle:*, index:int, array:Array ){
  77.               particle.isPressed = false;
  78.             }
  79.           );
  80.         break;
  81.       }
  82.     }
  83.     
  84.   }
  85.   
  86.   
  87. }
  88. import flash.display.*;
  89. import flash.geom.*;
  90.   /**
  91.   * 粒子の実装定義インターフェイス
  92.   */
  93.   interface IParticle {
  94.     function move():void;
  95.     function render( canvas:BitmapData ):void;
  96.   }
  97.   
  98.   /**
  99.   * 粒子クラス
  100.   */
  101.   class Particle implements IParticle {
  102.     
  103.     var subject:DisplayObject;
  104.     
  105.     var stage:Stage;
  106.     var isPressed:Boolean;
  107.     
  108.     /**
  109.     * 座標
  110.     */
  111.     var p:Point = new Point();
  112.     /**
  113.     * 移動ベクトル
  114.     */
  115.     var v:Point = new Point();
  116.     /**
  117.     * 色
  118.     */
  119.     var col:ColorTransform;
  120.     /**
  121.     * 拡大率
  122.     */
  123.     var scale:Number = 1;
  124.     /**
  125.     * 回転角(ラジアン)
  126.     */
  127.     var rotation:Number = 0;
  128.     
  129.     /**
  130.     * コンストラクタ
  131.     * @param    _stage
  132.     */
  133.     public function Particle( _stage:Stage ) {
  134.       if( !subject )
  135.         subject = getSubject();
  136.       stage = _stage;
  137.       col = new ColorTransform( 0000, Math.random() * 0xFF, 0x00, 0x64, Math.random() * 0x66 );
  138.     }
  139.     
  140.     /**
  141.     * 移動処理
  142.     */
  143.     public function move():void {
  144.       
  145.       v.x += Math.random() * 2 - 1;
  146.       v.y += Math.random() * 2 - 1;
  147.       v.x *= 0.99;
  148.       v.y *= 0.99;
  149.       
  150.       if( isPressed ){
  151.         var t:Point = new Point( stage.mouseX, stage.mouseY );
  152.         t = t.subtract(p);
  153.         t.normalize(v.length);
  154.         v = t;
  155.       }
  156.       
  157.       p = p.add(v);
  158.       rotation = Math.atan2( v.y, v.x );
  159.       modifyPositoin();
  160.       
  161.       var distance:Number = Point.distance( new Point( stage.mouseX, stage.mouseY ), p );
  162.       var maxDistance:Number = Point.distance( new Point(), new Point( stage.stageWidth, stage.stageHeight ) );
  163.       scale = 10 * distance / maxDistance + .1;
  164.    }
  165.     
  166.     /**
  167.     * 描画処理
  168.     * @param    canvas
  169.     */
  170.     public function render( canvas:BitmapData ):void{
  171.       var matrix:Matrix = new Matrix();
  172.       matrix.rotate( rotation );
  173.       matrix.scale( scale, scale );
  174.       matrix.translate( p.x, p.y );
  175.       canvas.draw( subject, matrix, col);
  176.     };
  177.     
  178.     /**
  179.     * 画面をはみ出た場合の処理
  180.     */
  181.     private function modifyPositoin():void {
  182.       //  画面をはみ出たら跳ね返る処理
  183.       p.x = ( p.x < 0 ) ? 0 : ( p.x > stage.stageWidth ) ? stage.stageWidth : p.x;
  184.       p.y = ( p.y < 0 ) ? 0 : ( p.y > stage.stageHeight ) ? stage.stageHeight : p.y;
  185.       v.x *= ( p.x == 0 || p.x == stage.stageWidth ) ? -1 : 1;
  186.       v.y *= ( p.y == 0 || p.y == stage.stageHeight ) ? -1 : 1;
  187.     }
  188.     
  189.     /**
  190.     * 描画する主題を生成
  191.     * @return
  192.     */
  193.     protected function getSubject():DisplayObject {
  194.       var sp:Shape = new Shape();
  195.       sp.graphics.beginFill( 0xFFFFFF );
  196.       sp.graphics.drawRect( -1031 );
  197.       sp.graphics.drawRect( 0, -113 );
  198.       sp.graphics.drawRect( 0011 );
  199.       return sp as DisplayObject;
  200.     }
  201.     
  202.   }
  203.   
  204.   /**
  205.   * 粒子クラス2
  206.   */
  207.   class Particle2 extends Particle {
  208.     /**
  209.     * コンストラクタ
  210.     * @param    _stage
  211.     */
  212.     public function Particle2( _stage:Stage ){
  213.       super( _stage );
  214.     }
  215.     /**
  216.     * 描画する主題を生成
  217.     * @return
  218.     */
  219.     override protected function getSubject():DisplayObject {
  220.       var sp:Shape = new Shape();
  221.       sp.graphics.beginFill( 0xFFFFFF );
  222.       sp.graphics.drawCircle(0,0,1.5);
  223.       return sp as DisplayObject;
  224.     }
  225.   }
noswf
  1. // forked from func09's Particles
  2. package {
  3.   
  4.   import flash.display.*;
  5.   import flash.events.*;
  6.   import flash.geom.*;
  7.   import flash.utils.*;
  8.   
  9.   /**
  10.   * Processingライクに描画するメインクラス
  11.   */
  12.   public class Particles extends Sprite {
  13.     var canvas:BitmapData;
  14.     var particleClasses:Array = [Particle,Particle2];
  15.     var particleClass:Class;
  16.     var particles:Array;
  17.     const numParticles:uint = 100;
  18.     
  19.     /**
  20.     * コンストラクタ
  21.     */
  22.     public function Particles() {
  23.       setUp();
  24.     }
  25.     
  26.     /**
  27.     * 初期化
  28.     */
  29.     public function setUp():void {
  30.       canvas = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0xFFFFFFFF );
  31.       addChild( new Bitmap( canvas ) );
  32.       particles = new Array();
  33.       forvar i:int=0; i<numParticles; i++ ){
  34.         particleClass = particleClasses[ i % 2 ];
  35.         var _:Particle = new particleClass( stage ) as Particle;
  36.         _.p.x = Math.random() * stage.stageWidth;
  37.         _.p.y = Math.random() * stage.stageHeight;
  38.         _.v.x = Math.random() * 2 - 1;
  39.         _.v.y = Math.random() * 2 - 1;
  40.         particles.push(_);
  41.       }
  42.       addEventListener( Event.ENTER_FRAME, draw );
  43.       stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseHandle );
  44.       stage.addEventListener( MouseEvent.MOUSE_UP, mouseHandle );
  45.     }
  46.     
  47.     /**
  48.     * 描画処理
  49.     * @param    event
  50.     */
  51.     public function draw( event:Event ):void {
  52.       canvas.draw( canvas, nullnew ColorTransform( 0000, 0xFF, 0xFF, 0xFF, 0xFF * .2 ),null,null,false);
  53.       particles.forEach(
  54.         function( particle:Particle, index:int, array:Array ){
  55.           particle.move();
  56.           particle.render( canvas );
  57.         }
  58.       );
  59.     }
  60.     
  61.     /**
  62.     * マウスイベントハンドル
  63.     * @param    event
  64.     */
  65.     public function mouseHandle( event:MouseEvent ):void {
  66.       switch( event.type ){
  67.         case MouseEvent.MOUSE_DOWN:
  68.           particles.forEach(
  69.             function( particle:*, index:int, array:Array ){
  70.               particle.isPressed = true;
  71.             }
  72.           );
  73.         break;
  74.         case MouseEvent.MOUSE_UP:
  75.           particles.forEach(
  76.             function( particle:*, index:int, array:Array ){
  77.               particle.isPressed = false;
  78.             }
  79.           );
  80.         break;
  81.       }
  82.     }
  83.     
  84.   }
  85.   
  86.   
  87. }
  88. import flash.display.*;
  89. import flash.geom.*;
  90.   /**
  91.   * 粒子の実装定義インターフェイス
  92.   */
  93.   interface IParticle {
  94.     function move():void;
  95.     function render( canvas:BitmapData ):void;
  96.   }
  97.   
  98.   /**
  99.   * 粒子クラス
  100.   */
  101.   class Particle implements IParticle {
  102.     
  103.     var subject:DisplayObject;
  104.     
  105.     var stage:Stage;
  106.     var isPressed:Boolean;
  107.     
  108.     /**
  109.     * 座標
  110.     */
  111.     var p:Point = new Point();
  112.     /**
  113.     * 移動ベクトル
  114.     */
  115.     var v:Point = new Point();
  116.     /**
  117.     * 色
  118.     */
  119.     var col:ColorTransform;
  120.     /**
  121.     * 拡大率
  122.     */
  123.     var scale:Number = 1;
  124.     /**
  125.     * 回転角(ラジアン)
  126.     */
  127.     var rotation:Number = 0;
  128.     
  129.     /**
  130.     * コンストラクタ
  131.     * @param    _stage
  132.     */
  133.     public function Particle( _stage:Stage ) {
  134.       if( !subject )
  135.         subject = getSubject();
  136.       stage = _stage;
  137.       col = new ColorTransform( 0000, Math.random() * 0xFF, 0x00, 0x64, Math.random() * 0x66 );
  138.     }
  139.     
  140.     /**
  141.     * 移動処理
  142.     */
  143.     public function move():void {
  144.       
  145.       v.x += Math.random() * 2 - 1;
  146.       v.y += Math.random() * 2 - 1;
  147.       v.x *= 0.99;
  148.       v.y *= 0.99;
  149.       
  150.       if( isPressed ){
  151.         var t:Point = new Point( stage.mouseX, stage.mouseY );
  152.         t = t.subtract(p);
  153.         t.normalize(v.length);
  154.         v = t;
  155.       }
  156.       
  157.       p = p.add(v);
  158.       rotation = Math.atan2( v.y, v.x );
  159.       modifyPositoin();
  160.       
  161.       var distance:Number = Point.distance( new Point( stage.mouseX, stage.mouseY ), p );
  162.       var maxDistance:Number = Point.distance( new Point(), new Point( stage.stageWidth, stage.stageHeight ) );
  163.       scale = 10 * distance / maxDistance + .1;
  164.    }
  165.     
  166.     /**
  167.     * 描画処理
  168.     * @param    canvas
  169.     */
  170.     public function render( canvas:BitmapData ):void{
  171.       var matrix:Matrix = new Matrix();
  172.       matrix.rotate( rotation );
  173.       matrix.scale( scale, scale );
  174.       matrix.translate( p.x, p.y );
  175.       canvas.draw( subject, matrix, col);
  176.     };
  177.     
  178.     /**
  179.     * 画面をはみ出た場合の処理
  180.     */
  181.     private function modifyPositoin():void {
  182.       //  画面をはみ出たら跳ね返る処理
  183.       p.x = ( p.x < 0 ) ? 0 : ( p.x > stage.stageWidth ) ? stage.stageWidth : p.x;
  184.       p.y = ( p.y < 0 ) ? 0 : ( p.y > stage.stageHeight ) ? stage.stageHeight : p.y;
  185.       v.x *= ( p.x == 0 || p.x == stage.stageWidth ) ? -1 : 1;
  186.       v.y *= ( p.y == 0 || p.y == stage.stageHeight ) ? -1 : 1;
  187.     }
  188.     
  189.     /**
  190.     * 描画する主題を生成
  191.     * @return
  192.     */
  193.     protected function getSubject():DisplayObject {
  194.       var sp:Shape = new Shape();
  195.       sp.graphics.beginFill( 0xFFFFFF );
  196.       sp.graphics.drawRect( -1031 );
  197.       sp.graphics.drawRect( 0, -113 );
  198.       sp.graphics.drawRect( 0011 );
  199.       return sp as DisplayObject;
  200.     }
  201.     
  202.   }
  203.   
  204.   /**
  205.   * 粒子クラス2
  206.   */
  207.   class Particle2 extends Particle {
  208.     /**
  209.     * コンストラクタ
  210.     * @param    _stage
  211.     */
  212.     public function Particle2( _stage:Stage ){
  213.       super( _stage );
  214.     }
  215.     /**
  216.     * 描画する主題を生成
  217.     * @return
  218.     */
  219.     override protected function getSubject():DisplayObject {
  220.       var sp:Shape = new Shape();
  221.       sp.graphics.beginFill( 0xFFFFFF );
  222.       sp.graphics.drawCircle(0,0,1.5);
  223.       return sp as DisplayObject;
  224.     }
  225.   }
noswf
  1. // forked from func09's Particles
  2. package {
  3.   
  4.   import flash.display.*;
  5.   import flash.events.*;
  6.   import flash.geom.*;
  7.   import flash.utils.*;
  8.   
  9.   /**
  10.   * Processingライクに描画するメインクラス
  11.   */
  12.   public class Particles extends Sprite {
  13.     var canvas:BitmapData;
  14.     var particleClasses:Array = [Particle,Particle2];
  15.     var particleClass:Class;
  16.     var particles:Array;
  17.     const numParticles:uint = 10;
  18.     
  19.     /**
  20.     * コンストラクタ
  21.     */
  22.     public function Particles() {
  23.       setUp();
  24.     }
  25.     
  26.     /**
  27.     * 初期化
  28.     */
  29.     public function setUp():void {
  30.       canvas = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0xFFFFFFFF );
  31.       addChild( new Bitmap( canvas ) );
  32.       particles = new Array();
  33.       forvar i:int=0; i<numParticles; i++ ){
  34.         particleClass = particleClasses[ i % 2 ];
  35.         var _:Particle = new particleClass( stage ) as Particle;
  36.         _.p.x = Math.random() * stage.stageWidth;
  37.         _.p.y = Math.random() * stage.stageHeight;
  38.         _.v.x = Math.random() * 2 - 1;
  39.         _.v.y = Math.random() * 2 - 1;
  40.         particles.push(_);
  41.       }
  42.       addEventListener( Event.ENTER_FRAME, draw );
  43.       stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseHandle );
  44.       stage.addEventListener( MouseEvent.MOUSE_UP, mouseHandle );
  45.     }
  46.     
  47.     /**
  48.     * 描画処理
  49.     * @param    event
  50.     */
  51.     public function draw( event:Event ):void {
  52.       canvas.draw( canvas, nullnew ColorTransform( 0000, 0xFF, 0xFF, 0xFF, 0.2 ),null,null,false);
  53.       particles.forEach(
  54.         function( particle:Particle, index:int, array:Array ){
  55.           particle.move();
  56.           particle.render( canvas );
  57.         }
  58.       );
  59.     }
  60.     
  61.     /**
  62.     * マウスイベントハンドル
  63.     * @param    event
  64.     */
  65.     public function mouseHandle( event:MouseEvent ):void {
  66.       switch( event.type ){
  67.         case MouseEvent.MOUSE_DOWN:
  68.           particles.forEach(
  69.             function( particle:*, index:int, array:Array ){
  70.               particle.isPressed = true;
  71.             }
  72.           );
  73.         break;
  74.         case MouseEvent.MOUSE_UP:
  75.           particles.forEach(
  76.             function( particle:*, index:int, array:Array ){
  77.               particle.isPressed = false;
  78.             }
  79.           );
  80.         break;
  81.       }
  82.     }
  83.     
  84.   }
  85.   
  86.   
  87. }
  88. import flash.display.*;
  89. import flash.geom.*;
  90.   /**
  91.   * 粒子の実装定義インターフェイス
  92.   */
  93.   interface IParticle {
  94.     function move():void;
  95.     function render( canvas:BitmapData ):void;
  96.   }
  97.   
  98.   /**
  99.   * 粒子クラス
  100.   */
  101.   class Particle implements IParticle {
  102.     
  103.     var subject:DisplayObject;
  104.     
  105.     var stage:Stage;
  106.     var isPressed:Boolean;
  107.     
  108.     /**
  109.     * 座標
  110.     */
  111.     var p:Point = new Point();
  112.     /**
  113.     * 移動ベクトル
  114.     */
  115.     var v:Point = new Point();
  116.     /**
  117.     * 色
  118.     */
  119.     var col:ColorTransform;
  120.     /**
  121.     * 拡大率
  122.     */
  123.     var scale:Number = 1;
  124.     /**
  125.     * 回転角(ラジアン)
  126.     */
  127.     var rotation:Number = 0;
  128.     
  129.     /**
  130.     * コンストラクタ
  131.     * @param    _stage
  132.     */
  133.     public function Particle( _stage:Stage ) {
  134.       if( !subject )
  135.         subject = getSubject();
  136.       stage = _stage;
  137.       col = new ColorTransform( 0000, Math.random() * 0xFF, 0x00, 0x64, Math.random() * 0x66 );
  138.     }
  139.     
  140.     /**
  141.     * 移動処理
  142.     */
  143.     public function move():void {
  144.       
  145.       v.x += Math.random() * 2 - 1;
  146.       v.y += Math.random() * 2 - 1;
  147.       v.x *= 0.99;
  148.       v.y *= 0.99;
  149.       
  150.       if( isPressed ){
  151.         var t:Point = new Point( stage.mouseX, stage.mouseY );
  152.         t = t.subtract(p);
  153.         t.normalize(v.length);
  154.         v = t;
  155.       }
  156.       
  157.       p = p.add(v);
  158.       rotation = Math.atan2( v.y, v.x );
  159.       modifyPositoin();
  160.       
  161.       var distance:Number = Point.distance( new Point( stage.mouseX, stage.mouseY ), p );
  162.       var maxDistance:Number = Point.distance( new Point(), new Point( stage.stageWidth, stage.stageHeight ) );
  163.       scale = 10 * distance / maxDistance + .1;
  164.    }
  165.     
  166.     /**
  167.     * 描画処理
  168.     * @param    canvas
  169.     */
  170.     public function render( canvas:BitmapData ):void{
  171.       var matrix:Matrix = new Matrix();
  172.       matrix.rotate( rotation );
  173.       matrix.scale( scale, scale );
  174.       matrix.translate( p.x, p.y );
  175.       canvas.draw( subject, matrix, col);
  176.     };
  177.     
  178.     /**
  179.     * 画面をはみ出た場合の処理
  180.     */
  181.     private function modifyPositoin():void {
  182.       //  画面をはみ出たら跳ね返る処理
  183.       p.x = ( p.x < 0 ) ? 0 : ( p.x > stage.stageWidth ) ? stage.stageWidth : p.x;
  184.       p.y = ( p.y < 0 ) ? 0 : ( p.y > stage.stageHeight ) ? stage.stageHeight : p.y;
  185.       v.x *= ( p.x == 0 || p.x == stage.stageWidth ) ? -1 : 1;
  186.       v.y *= ( p.y == 0 || p.y == stage.stageHeight ) ? -1 : 1;
  187.     }
  188.     
  189.     /**
  190.     * 描画する主題を生成
  191.     * @return
  192.     */
  193.     protected function getSubject():DisplayObject {
  194.       var sp:Shape = new Shape();
  195.       sp.graphics.beginFill( 0xFFFFFF );
  196.       sp.graphics.drawRect( -1031 );
  197.       sp.graphics.drawRect( 0, -113 );
  198.       sp.graphics.drawRect( 0011 );
  199.       return sp as DisplayObject;
  200.     }
  201.     
  202.   }
  203.   
  204.   /**
  205.   * 粒子クラス2
  206.   */
  207.   class Particle2 extends Particle {
  208.     /**
  209.     * コンストラクタ
  210.     * @param    _stage
  211.     */
  212.     public function Particle2( _stage:Stage ){
  213.       super( _stage );
  214.     }
  215.     /**
  216.     * 描画する主題を生成
  217.     * @return
  218.     */
  219.     override protected function getSubject():DisplayObject {
  220.       var sp:Shape = new Shape();
  221.       sp.graphics.beginFill( 0xFFFFFF );
  222.       sp.graphics.drawCircle(0,0,1.5);
  223.       return sp as DisplayObject;
  224.     }
  225.   }
noswf
  1. // forked from func09's Particles
  2. package {
  3.   
  4.   import flash.display.*;
  5.   import flash.events.*;
  6.   import flash.geom.*;
  7.   import flash.utils.*;
  8.   
  9.   /**
  10.   * Processingライクに描画するメインクラス
  11.   */
  12.   public class Particles extends Sprite {
  13.     var canvas:BitmapData;
  14.     var particleClasses:Array = [Particle,Particle2];
  15.     var particleClass:Class;
  16.     var particles:Array;
  17.     const numParticles:uint = 33;
  18.     
  19.     /**
  20.     * コンストラクタ
  21.     */
  22.     public function Particles() {
  23.       setUp();
  24.     }
  25.     
  26.     /**
  27.     * 初期化
  28.     */
  29.     public function setUp():void {
  30.       canvas = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0xFFFFFFFF );
  31.       addChild( new Bitmap( canvas ) );
  32.       particles = new Array();
  33.       forvar i:int=0; i<numParticles; i++ ){
  34.         particleClass = particleClasses[ i % 2 ];
  35.         var _:Particle = new particleClass( stage ) as Particle;
  36.         _.p.x = Math.random() * stage.stageWidth;
  37.         _.p.y = Math.random() * stage.stageHeight;
  38.         _.v.x = Math.random() * 2 - 1;
  39.         _.v.y = Math.random() * 2 - 1;
  40.         particles.push(_);
  41.       }
  42.       addEventListener( Event.ENTER_FRAME, draw );
  43.       stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseHandle );
  44.       stage.addEventListener( MouseEvent.MOUSE_UP, mouseHandle );
  45.     }
  46.     
  47.     /**
  48.     * 描画処理
  49.     * @param    event
  50.     */
  51.     public function draw( event:Event ):void {
  52.       canvas.draw( canvas, nullnew ColorTransform( 0000, 0xFF, 0xFF, 0xFF, 0xFF * .2 ),null,null,false);
  53.       particles.forEach(
  54.         function( particle:Particle, index:int, array:Array ){
  55.           particle.move();
  56.           particle.render( canvas );
  57.         }
  58.       );
  59.     }
  60.     
  61.     /**
  62.     * マウスイベントハンドル
  63.     * @param    event
  64.     */
  65.     public function mouseHandle( event:MouseEvent ):void {
  66.       switch( event.type ){
  67.         case MouseEvent.MOUSE_DOWN:
  68.           particles.forEach(
  69.             function( particle:*, index:int, array:Array ){
  70.               particle.isPressed = true;
  71.             }
  72.           );
  73.         break;
  74.         case MouseEvent.MOUSE_UP:
  75.           particles.forEach(
  76.             function( particle:*, index:int, array:Array ){
  77.               particle.isPressed = false;
  78.             }
  79.           );
  80.         break;
  81.       }
  82.     }
  83.     
  84.   }
  85.   
  86.   
  87. }
  88. import flash.display.*;
  89. import flash.geom.*;
  90.   /**
  91.   * 粒子の実装定義インターフェイス
  92.   */
  93.   interface IParticle {
  94.     function move():void;
  95.     function render( canvas:BitmapData ):void;
  96.   }
  97.   
  98.   /**
  99.   * 粒子クラス
  100.   */
  101.   class Particle implements IParticle {
  102.     
  103.     var subject:DisplayObject;
  104.     
  105.     var stage:Stage;
  106.     var isPressed:Boolean;
  107.     
  108.     /**
  109.     * 座標
  110.     */
  111.     var p:Point = new Point();
  112.     /**
  113.     * 移動ベクトル
  114.     */
  115.     var v:Point = new Point();
  116.     /**
  117.     * 色
  118.     */
  119.     var col:ColorTransform;
  120.     /**
  121.     * 拡大率
  122.     */
  123.     var scale:Number = 1;
  124.     /**
  125.     * 回転角(ラジアン)
  126.     */
  127.     var rotation:Number = 0;
  128.     
  129.     /**
  130.     * コンストラクタ
  131.     * @param    _stage
  132.     */
  133.     public function Particle( _stage:Stage ) {
  134.       if( !subject )
  135.         subject = getSubject();
  136.       stage = _stage;
  137.       col = new ColorTransform( 0000, Math.random() * 0xFF, 0x00, 0x64, Math.random() * 0x66 );
  138.     }
  139.     
  140.     /**
  141.     * 移動処理
  142.     */
  143.     public function move():void {
  144.       
  145.       v.x += Math.random() * 2 - 1;
  146.       v.y += Math.random() * 2 - 1;
  147.       v.x *= 0.99;
  148.       v.y *= 0.99;
  149.       
  150.       if( isPressed ){
  151.         var t:Point = new Point( stage.mouseX, stage.mouseY );
  152.         t = t.subtract(p);
  153.         t.normalize(v.length);
  154.         v = t;
  155.       }
  156.       
  157.       p = p.add(v);
  158.       rotation = Math.atan2( v.y, v.x );
  159.       modifyPositoin();
  160.       
  161.       var distance:Number = Point.distance( new Point( stage.mouseX, stage.mouseY ), p );
  162.       var maxDistance:Number = Point.distance( new Point(), new Point( stage.stageWidth, stage.stageHeight ) );
  163.       scale = 50* distance / maxDistance + .1;
  164.    }
  165.     
  166.     /**
  167.     * 描画処理
  168.     * @param    canvas
  169.     */
  170.     public function render( canvas:BitmapData ):void{
  171.       var matrix:Matrix = new Matrix();
  172.       matrix.rotate( rotation );
  173.       matrix.scale( scale, scale );
  174.       matrix.translate( p.x, p.y );
  175.       canvas.draw( subject, matrix, col);
  176.     };
  177.     
  178.     /**
  179.     * 画面をはみ出た場合の処理
  180.     */
  181.     private function modifyPositoin():void {
  182.       //  画面をはみ出たら跳ね返る処理
  183.       p.x = ( p.x < 0 ) ? 0 : ( p.x > stage.stageWidth ) ? stage.stageWidth : p.x;
  184.       p.y = ( p.y < 0 ) ? 0 : ( p.y > stage.stageHeight ) ? stage.stageHeight : p.y;
  185.       v.x *= ( p.x == 0 || p.x == stage.stageWidth ) ? -1 : 1;
  186.       v.y *= ( p.y == 0 || p.y == stage.stageHeight ) ? -1 : 1;
  187.     }
  188.     
  189.     /**
  190.     * 描画する主題を生成
  191.     * @return
  192.     */
  193.     protected function getSubject():DisplayObject {
  194.       var sp:Shape = new Shape();
  195.       sp.graphics.beginFill( 0xFFFFFF );
  196.       sp.graphics.drawRect( -1031 );
  197.       sp.graphics.drawRect( 0, -113 );
  198.       sp.graphics.drawRect( 0011 );
  199.       return sp as DisplayObject;
  200.     }
  201.     
  202.   }
  203.   
  204.   /**
  205.   * 粒子クラス2
  206.   */
  207.   class Particle2 extends Particle {
  208.     /**
  209.     * コンストラクタ
  210.     * @param    _stage
  211.     */
  212.     public function Particle2( _stage:Stage ){
  213.       super( _stage );
  214.     }
  215.     /**
  216.     * 描画する主題を生成
  217.     * @return
  218.     */
  219.     override protected function getSubject():DisplayObject {
  220.       var sp:Shape = new Shape();
  221.       sp.graphics.beginFill( 0xFFFFFF );
  222.       sp.graphics.drawCircle(0,0,1.5);
  223.       return sp as DisplayObject;
  224.     }
  225.   }
noswf
  1. // forked from func09's Particles
  2. package {
  3.   
  4.   import flash.display.*;
  5.   import flash.events.*;
  6.   import flash.geom.*;
  7.   import flash.utils.*;
  8.   
  9.   /**
  10.   * Processingライクに描画するメインクラス
  11.   */
  12.   public class Particles extends Sprite {
  13.     var canvas:BitmapData;
  14.     var particleClasses:Array = [Particle,Particle2];
  15.     var particleClass:Class;
  16.     var particles:Array;
  17.     const numParticles:uint = 100;
  18.     
  19.     /**
  20.     * コンストラクタ
  21.     */
  22.     public function Particles() {
  23.       setUp();
  24.     }
  25.     
  26.     /**
  27.     * 初期化
  28.     */
  29.     public function setUp():void {
  30.       canvas = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0xFFFFFFFF );
  31.       addChild( new Bitmap( canvas ) );
  32.       particles = new Array();
  33.       forvar i:int=0; i<numParticles; i++ ){
  34.         particleClass = particleClasses[ i % 2 ];
  35.         var _:Particle = new particleClass( stage ) as Particle;
  36.         _.p.x = Math.random() * stage.stageWidth;
  37.         _.p.y = Math.random() * stage.stageHeight;
  38.         _.v.x = Math.random() * 2 - 1;
  39.         _.v.y = Math.random() * 2 - 1;
  40.         particles.push(_);
  41.       }
  42.       addEventListener( Event.ENTER_FRAME, draw );
  43.       stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseHandle );
  44.       stage.addEventListener( MouseEvent.MOUSE_UP, mouseHandle );
  45.     }
  46.     
  47.     /**
  48.     * 描画処理
  49.     * @param    event
  50.     */
  51.     public function draw( event:Event ):void {
  52.       canvas.draw( canvas, nullnew ColorTransform( 0000, 0xFF, 0xFF, 0xFF, 0xFF * .2 ),null,null,false);
  53.       particles.forEach(
  54.         function( particle:Particle, index:int, array:Array ){
  55.           particle.move();
  56.           particle.render( canvas );
  57.         }
  58.       );
  59.     }
  60.     
  61.     /**
  62.     * マウスイベントハンドル
  63.     * @param    event
  64.     */
  65.     public function mouseHandle( event:MouseEvent ):void {
  66.       switch( event.type ){
  67.         case MouseEvent.MOUSE_DOWN:
  68.           particles.forEach(
  69.             function( particle:*, index:int, array:Array ){
  70.               particle.isPressed = true;
  71.             }
  72.           );
  73.         break;
  74.         case MouseEvent.MOUSE_UP:
  75.           particles.forEach(
  76.             function( particle:*, index:int, array:Array ){
  77.               particle.isPressed = false;
  78.             }
  79.           );
  80.         break;
  81.       }
  82.     }
  83.     
  84.   }
  85.   
  86.   
  87. }
  88. import flash.display.*;
  89. import flash.geom.*;
  90.   /**
  91.   * 粒子の実装定義インターフェイス
  92.   */
  93.   interface IParticle {
  94.     function move():void;
  95.     function render( canvas:BitmapData ):void;
  96.   }
  97.   
  98.   /**
  99.   * 粒子クラス
  100.   */
  101.   class Particle implements IParticle {
  102.     
  103.     var subject:DisplayObject;
  104.     
  105.     var stage:Stage;
  106.     var isPressed:Boolean;
  107.     
  108.     /**
  109.     * 座標
  110.     */
  111.     var p:Point = new Point();
  112.     /**
  113.     * 移動ベクトル
  114.     */
  115.     var v:Point = new Point();
  116.     /**
  117.     * 色
  118.     */
  119.     var col:ColorTransform;
  120.     /**
  121.     * 拡大率
  122.     */
  123.     var scale:Number = 1;
  124.     /**
  125.     * 回転角(ラジアン)
  126.     */
  127.     var rotation:Number = 0;
  128.     
  129.     /**
  130.     * コンストラクタ
  131.     * @param    _stage
  132.     */
  133.     public function Particle( _stage:Stage ) {
  134.       if( !subject )
  135.         subject = getSubject();
  136.       stage = _stage;
  137.       col = new ColorTransform( 0000, Math.random() * 0xFF, 0x00, 0x64, Math.random() * 0x66 );
  138.     }
  139.     
  140.     /**
  141.     * 移動処理
  142.     */
  143.     public function move():void {
  144.       
  145.       v.x += Math.random() * 2 - 1;
  146.       v.y += Math.random() * 2 - 1;
  147.       v.x *= 0.99;
  148.       v.y *= 0.99;
  149.       
  150.       if( isPressed ){
  151.         var t:Point = new Point( stage.mouseX, stage.mouseY );
  152.         t = t.subtract(p);
  153.         t.normalize(v.length);
  154.         v = t;
  155.       }
  156.       
  157.       p = p.add(v);
  158.       rotation = Math.atan2( v.y, v.x );
  159.       modifyPositoin();
  160.       
  161.       var distance:Number = Point.distance( new Point( stage.mouseX, stage.mouseY ), p );
  162.       var maxDistance:Number = Point.distance( new Point(), new Point( stage.stageWidth, stage.stageHeight ) );
  163.       scale = 10 * distance / maxDistance + .1;
  164.    }
  165.     
  166.     /**
  167.     * 描画処理
  168.     * @param    canvas
  169.     */
  170.     public function render( canvas:BitmapData ):void{
  171.       var matrix:Matrix = new Matrix();
  172.       matrix.rotate( rotation );
  173.       matrix.scale( scale, scale );
  174.       matrix.translate( p.x, p.y );
  175.       canvas.draw( subject, matrix, col);
  176.     };
  177.     
  178.     /**
  179.     * 画面をはみ出た場合の処理
  180.     */
  181.     private function modifyPositoin():void {
  182.       //  画面をはみ出たら跳ね返る処理
  183.       p.x = ( p.x < 0 ) ? 0 : ( p.x > stage.stageWidth ) ? stage.stageWidth : p.x;
  184.       p.y = ( p.y < 0 ) ? 0 : ( p.y > stage.stageHeight ) ? stage.stageHeight : p.y;
  185.       v.x *= ( p.x == 0 || p.x == stage.stageWidth ) ? -1 : 1;
  186.       v.y *= ( p.y == 0 || p.y == stage.stageHeight ) ? -1 : 1;
  187.     }
  188.     
  189.     /**
  190.     * 描画する主題を生成
  191.     * @return
  192.     */
  193.     protected function getSubject():DisplayObject {
  194.       var sp:Shape = new Shape();
  195.       sp.graphics.beginFill( 0xFFFFFF );
  196.       sp.graphics.drawRect( -1031 );
  197.       sp.graphics.drawRect( 0, -113 );
  198.       sp.graphics.drawRect( 0011 );
  199.       return sp as DisplayObject;
  200.     }
  201.     
  202.   }
  203.   
  204.   /**
  205.   * 粒子クラス2
  206.   */
  207.   class Particle2 extends Particle {
  208.     /**
  209.     * コンストラクタ
  210.     * @param    _stage
  211.     */
  212.     public function Particle2( _stage:Stage ){
  213.       super( _stage );
  214.     }
  215.     /**
  216.     * 描画する主題を生成
  217.     * @return
  218.     */
  219.     override protected function getSubject():DisplayObject {
  220.       var sp:Shape = new Shape();
  221.       sp.graphics.beginFill( 0xFFFFFF );
  222.       sp.graphics.drawCircle(0,0,1.5);
  223.       return sp as DisplayObject;
  224.     }
  225.   }
noswf
Get Adobe Flash Player