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

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

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


forked from : katapad's クリックでunkoを爆発させたり戻したりするコード [diff(4)]

FORKED

forked from: クリックでunkoを爆発させたり戻したりするコード forked from: forked from: クリックでunkoを爆発させたり戻したりするコード [diff(1)]

  1. // forked from jejome's forked from: クリックでunkoを爆発させたり戻したりするコード
  2. // forked from katapad's クリックでunkoを爆発させたり戻したりするコード
  3. package  
  4. {
  5.     import fl.motion.easing.*;
  6.     import flash.display.*;
  7.     import flash.events.*;
  8.     import flash.filters.*;
  9.     import flash.geom.Point;
  10.     import flash.text.*;
  11.     import gs.TweenMax;
  12.     import org.papervision3d.core.effects.BitmapLayerEffect;
  13.     import org.papervision3d.core.geom.Pixels;
  14.     import org.papervision3d.core.geom.renderables.Pixel3D;
  15.     import org.papervision3d.objects.DisplayObject3D;
  16.     import org.papervision3d.view.BasicView;
  17.     import org.papervision3d.view.layer.BitmapEffectLayer;
  18.     
  19.     [SWF(width="250", height="100", backgroundColor="0Xdc0719", frameRate="60")]
  20.     /**
  21.      * いま LA で大人気のunkoをクリックではじき飛ばそう!コードはクソ汚いYO!
  22.      * @author katapad
  23.      * @version 0.1
  24.      * @since 2009/10/06 19:06
  25.      */
  26.     public class UnkoField extends BasicView 
  27.     {
  28.         //----------------------------------
  29.         //  static var/const
  30.         //----------------------------------
  31.         private static const _TEXT_SIZE:Number = 20;
  32.         
  33.         //----------------------------------
  34.         //  instance var 
  35.         //----------------------------------
  36.         private var _root:DisplayObject3D;
  37.         private var _defaultForm:Boolean;
  38.         private var _pixelList:Array;
  39.         private var _textPosList:Array;
  40.         
  41.         /**
  42.          * コンストラクタ
  43.          */
  44.         public function UnkoField() 
  45.         {
  46.             if (!stage)
  47.                 addEventListener(Event.ADDED_TO_STAGE, init);
  48.             else
  49.                 init();
  50.         }
  51.         
  52.         /**
  53.          * 初期化
  54.          */
  55.         private function init(event:Event = null):void 
  56.         {
  57.             removeEventListener(Event.ADDED_TO_STAGE, init);
  58.             _defaultForm = true;
  59.             initScene();
  60.             createText();
  61.             
  62.             setupInteraction();
  63.             startRendering();
  64.         }
  65.         
  66.         //--------------------------------------------------------------------------
  67.         //
  68.         //  OVERRIDE
  69.         //
  70.         //--------------------------------------------------------------------------
  71.         override protected function onRenderTick(event:Event = null):void 
  72.         {
  73.             super.onRenderTick(event);
  74.             _root.rotationX += ( -viewport.containerSprite.mouseX - _root.rotationX) * 0.1
  75.             _root.rotationY += ( -viewport.containerSprite.mouseY - _root.rotationY) * 0.1;
  76.             _root.rotationZ += ( -viewport.containerSprite.mouseY - _root.rotationZ) * 0.05;
  77.         }
  78.         
  79.         //--------------------------------------------------------------------------
  80.         //
  81.         //  PRIVATE
  82.         //
  83.         //--------------------------------------------------------------------------
  84.         private function initScene():void
  85.         {
  86.             _root = scene.addChild(new DisplayObject3D());
  87.             _camera.z = -70;
  88.         }
  89.         
  90.         private function createText():void
  91.         {
  92.             _textPosList = getTextPos();
  93.             
  94.             var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport, stage.stageWidth, stage.stageHeight, true0"clear_pre"falsefalse);
  95.             bfx.drawCommand.blendMode = BlendMode.ADD;
  96.             bfx.addEffect(new BitmapLayerEffect(new BlurFilter(88, BitmapFilterQuality.MEDIUM), false));
  97.             viewport.containerSprite.addLayer(bfx);
  98.             
  99.             var pixels:Pixels  = new Pixels(bfx);
  100.             _pixelList = [];
  101.             _root.addChild(pixels);
  102.             for (var i:int = 0, n:int = _textPosList.length; i < n; ++i) 
  103.             {
  104.                 var pxd:PxData = _textPosList[i];
  105.                 var px:Pixel3D = new Pixel3D(pxd.color, pxd.x, pxd.y, 0);
  106.                 pixels.addPixel3D(px);
  107.                 _pixelList[i] = px;
  108.             }
  109.             
  110.             bfx.addDisplayObject3D(pixels);
  111.         }
  112.         
  113.         private function getTextPos():Array
  114.         {
  115.             var tf:TextField = new TextField();
  116.             tf.defaultTextFormat = new TextFormat("_sans", _TEXT_SIZE, 0xFFFFFF, true);
  117.             tf.autoSize = TextFieldAutoSize.LEFT;
  118.             tf.text = "BM FM";
  119.             
  120.             var bmd:BitmapData = new BitmapData(tf.textWidth + 2, tf.textHeight, true, 0x00000000);
  121.             bmd.draw(tf);
  122.             
  123.             var result:Array = [];
  124.             for (var i:int = 0, n:int = bmd.width; i < n; ++i) 
  125.             {
  126.                 for (var j:int = 0, m:int = bmd.height; j < m; ++j) 
  127.                 {
  128.                     var color:uint = bmd.getPixel(i, j);
  129.                     if (color)
  130.                     {
  131.                         switch (i % 3
  132.                         {
  133.                             case 0:
  134.                                 color = 0xFFEF8080;
  135.                                 break;
  136.                             case 1:
  137.                                 color = 0xFF80EF80;
  138.                                 break;
  139.                             case 2:
  140.                                 color = 0xFF8080EF;
  141.                                 break;
  142.                         }
  143.                         result.push(new PxData(i  - n * 0.5, j - m * 0.5, color));
  144.                     }
  145.                 }
  146.             }
  147.             return result;
  148.         }
  149.         
  150.         private function setupInteraction():void
  151.         {
  152.             stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
  153.         }
  154.         
  155.         private function downHandler(event:MouseEvent):void 
  156.         {
  157.             if (_defaultForm)
  158.                 explosion();
  159.             else
  160.                 defaultPosition();
  161.         }
  162.         
  163.         private function explosion():void
  164.         {
  165.             _defaultForm = false;
  166.             for (var i:int = 0, n:int = _pixelList.length; i < n; ++i) 
  167.             {
  168.                 var px:Pixel3D = _pixelList[i];
  169.                 TweenMax.to(px, 1.5, { x: Math.random() * 300 - 150, y: Math.random() * 300 - 150, z: Math.random() * 300 - 150, ease: Quintic.easeOut, delay: 0.0001 * i, overwrite: true});
  170.             }
  171.         }
  172.         
  173.         private function defaultPosition():void
  174.         {
  175.             _defaultForm = true;
  176.             for (var i:int = 0, n:int = _pixelList.length; i < n; ++i) 
  177.             {
  178.                 var px:Pixel3D = _pixelList[i];
  179.                 var pxd:PxData = _textPosList[i];
  180.                 TweenMax.to(px, 0.7, { x: pxd.x, y: pxd.y, z: 0, ease: Quintic.easeOut, delay: 0.0005 * i, overwrite: true });
  181.             }
  182.         }
  183.         
  184.     }
  185.     
  186. }
  187. class PxData
  188. {
  189.     public var x:Number;
  190.     public var y:Number;
  191.     public var color:uint;
  192.     function PxData(x:Number, y:Number, color:uint)
  193.     {
  194.         this.x = x;
  195.         this.y = y;
  196.         this.color = color;
  197.     }
  198.     
  199. }
noswf
Get Adobe Flash Player