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

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

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


FAVORITE BY
:
unkoクリック爆発
:
text
:
:
3Dパーティクルわ〜い!うんこだ!
:
:
:
:
:
こういう系大好きっす。
:
PV3D
:
Papervision3DUnko Papervision3D
:
wonderful work it's so cool
:
美しいunko
:
キレイすぎるunko!
:
undoじゃないの?
:
:
:
particleunko
:
スタイリッシュうんこ
:
Papervision3Dunko小学生のころunkoに爆竹をしかけたのを思い出した!
:
:
!!!
:
:
unko爆発しろ!
:
unkoかっこいいのに、unko
:
unkofl
:
Papervision3DPixelsすげぇ PV3Dでこんなことできるんだな~。勉強になる
:
うん、これはBeautifl!
:
なんてかっこいいunko!
:
unkoのくせに生意気だ
:
カッコイイうんこ
:
サイコー!
FORKED

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

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

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

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

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

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

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

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

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

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