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

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

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


FORKED

[1日1Wonderfl]9日目: スプレーっぽいなにか poor code version. [1日1Wonderfl]9日目: スプレーっぽいなにか fixed code version. [diff(20)]

  1. // forked from soundkitchen's [1日1Wonderfl]9日目: スプレーっぽいなにか poor code version.
  2. /**
  3.  *  スプレーっぽい効果やってみたよ。
  4.  *
  5.  *  とりあえず解決版:
  6.  *      Graphics は毎回 clear するようにして、
  7.  *      代りに毎回 BitmapData に draw するように変更。
  8.  *      適度にメモリーも開放されてるっぽいし、良いんじゃない?
  9.  */
  10. package
  11. {
  12.     import flash.display.Bitmap;
  13.     import flash.display.BitmapData;
  14.     import flash.display.Graphics;
  15.     import flash.display.Shape;
  16.     import flash.display.Sprite;
  17.     import flash.events.Event;
  18.     import flash.events.MouseEvent;
  19.     import com.flashdynamix.utils.SWFProfiler;
  20.     [SWF(width=465, height=465, frameRate=30, backgroundColor=0xffffff)]
  21.     public class Main extends Sprite
  22.     {
  23.         private var isMouseDown:Boolean;
  24.         private var canvas:Shape;
  25.         private var film:BitmapData;
  26.         /**
  27.          *  コンストラクタ
  28.          */
  29.         public function Main()
  30.         {
  31.             addEventListener(Event.ADDED_TO_STAGE, initialize);
  32.         }
  33.         /**
  34.          *  初期化
  35.          */
  36.         private function initialize(evt:Event):void
  37.         {
  38.             removeEventListener(Event.ADDED_TO_STAGE, initialize);
  39.             //  プロファイラを仕込む
  40.             SWFProfiler.init(this);
  41.             //  マウスダウンされてる?フラグ
  42.             isMouseDown = false;
  43.             //  キャンバスとなる Shape 作って
  44.             canvas = new Shape();
  45.             //  特攻まない
  46.             //addChild(canvas);
  47.             //  フィルムとなる BitmapData 作って
  48.             film = new BitmapData(stage.stageWidth, stage.stageHeight, true0);
  49.             //  特攻む
  50.             addChild(new Bitmap(film));
  51.             //  ステージにイベント設定
  52.             stage.addEventListener(Event.ENTER_FRAME, step);
  53.             stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  54.             stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
  55.         }
  56.         /**
  57.          *  毎フレームの処理
  58.          */
  59.         private function step(evt:Event):void
  60.         {
  61.             //  マウスダウンされてなければおしまい
  62.             if (!isMouseDown) return;
  63.             var i:uint,
  64.                 g:Graphics,
  65.                 angle:Number, distance:Number,
  66.                 tx:Number, ty:Number;
  67.             //  キャンバスの Graphics を何回も使うので変数へ
  68.             g = canvas.graphics;
  69.             //  ほんでもって clear
  70.             g.clear();
  71.             for (i=0; i<30; i++)
  72.             {
  73.                 //  ドットを打つ位置を決めるデータを用意
  74.                 angle = Math.random() * Math.PI * 2;
  75.                 distance = Math.random() * 30;
  76.                 //  ドットを打つ位置を決定
  77.                 tx = mouseX + Math.cos(angle) * distance;
  78.                 ty = mouseY + Math.sin(angle) * distance;
  79.                 //  書き込む
  80.                 g.beginFill(0xff0000);
  81.                 g.drawRect(tx, ty, 11);
  82.                 g.endFill();
  83.             }
  84.             //  書き込みを反映
  85.             film.lock();
  86.             film.draw(canvas);
  87.             film.unlock();
  88.         }
  89.         /**
  90.          *  stage のマウスダウン
  91.          */
  92.         private function mouseDownHandler(evt:MouseEvent):void
  93.         {
  94.             isMouseDown = true;
  95.         }
  96.         /**
  97.          *  stage のマウスアップ
  98.          */
  99.         private function mouseUpHandler(evt:MouseEvent):void
  100.         {
  101.             isMouseDown = false;
  102.         }
  103.     }
  104. }
noswf
Get Adobe Flash Player