Toshihiro Shimada

ご参加いただきありがとうございました!!
やっほーい!
参加していただいてありがとうございます!楽しんでいただけましたかー。
アニメーション素材をどういう風に料理してもらえるかという実験的な試みでしたが、
思ってた以上にうまく使いこなしていてAS×アニメーションの次の表現のアイディアをいただけました。
ありがとうございました!

Thank you for your participation!
Did you enjoy it?
Though it was experiment how animation materials can be utilized, but it was lot more than I could imagined before. Fortunately, I came up with some ideas of next AS x Animation expression. Thank you very much.

Amateur

Queenuwi

  1. // ワンコは犬ですから
  2. package {
  3.     import flash.display.*;
  4.     import flash.events.*;
  5.     import flash.utils.*;
  6.     import flash.net.*;
  7.     import flash.system.*;
  8.     import jp.progression.commands.*;
  9.     import jp.progression.commands.lists.*;
  10.     import jp.progression.commands.display.*;
  11.     import jp.progression.commands.net.*;
  12.     import jp.progression.commands.tweens.*;
  13.     import jp.progression.events.*;
  14.     import flash.text.*;
  15.     
  16.     // 背景とかインターフェースとか作り込む余裕がなかった。
  17.     // いろいろやっつけすぎ。
  18.     public class Amateur extends Sprite {
  19.         public static var GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoAmateur.swf";
  20.         
  21.         public var stayMotion:MovieClip;
  22.         public var jumpMotion:MovieClip;
  23.         public var highJumpMotion:MovieClip;
  24.         public var walkMotion:MovieClip;
  25.         public var runMotion:MovieClip;
  26.         public var squatMotion:MovieClip;
  27.         public var questionMotion:MovieClip;
  28.         public var exclamationMotion:MovieClip;
  29.         public var heartMotion:MovieClip;
  30.         public var poutMotion:MovieClip;
  31.         public var starMotion:MovieClip;
  32.         public var singMotion:MovieClip;
  33.         public var sleepMotion:MovieClip;
  34.         public var wakeMotion:MovieClip;
  35.         
  36.         
  37.         public function Amateur(){
  38.             super();
  39.             stage.scaleMode = StageScaleMode.NO_SCALE;
  40.             stage.align = StageAlign.TOP_LEFT;
  41.             
  42.             var com:SerialList = new SerialList();
  43.             com.addCommand(
  44.                 new LoadSWF( new URLRequest( GRAPHICS_URL ) ),
  45.                 function():void {
  46.                     var loader:Loader = Loader( this.latestData );
  47.                     var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;
  48.                     
  49.                     stayMotion = new ( domain.getDefinition( "StayMotion" ) as Class );
  50.                     jumpMotion = new ( domain.getDefinition( "JumpMotion" ) as Class );
  51.                     highJumpMotion = new ( domain.getDefinition( "HighJumpMotion" ) as Class );
  52.                     walkMotion = new ( domain.getDefinition( "WalkMotion" ) as Class );
  53.                     runMotion = new ( domain.getDefinition( "RunMotion" ) as Class );
  54.                     squatMotion = new ( domain.getDefinition( "SquatMotion" ) as Class );
  55.                     questionMotion = new ( domain.getDefinition( "QuestionMotion" ) as Class );
  56.                     exclamationMotion = new ( domain.getDefinition( "ExclamationMotion" ) as Class );
  57.                     heartMotion = new ( domain.getDefinition( "HeartMotion" ) as Class );
  58.                     poutMotion = new ( domain.getDefinition( "PoutMotion" ) as Class );
  59.                     starMotion = new ( domain.getDefinition( "StarMotion" ) as Class );
  60.                     singMotion = new ( domain.getDefinition( "SingMotion" ) as Class );
  61.                     sleepMotion = new ( domain.getDefinition( "SleepMotion" ) as Class );
  62.                     wakeMotion = new ( domain.getDefinition( "WakeMotion" ) as Class );
  63.                     
  64.                 }
  65.             );
  66.             com.addEventListener(ExecuteEvent.EXECUTE_COMPLETE,onLoadSWF);
  67.             com.execute();
  68.             _tf = new TextField();
  69.             addChild(_tf);
  70.             _tf.width = 200;
  71.             _tf.height = 100;
  72.             
  73.             var g : Graphics = graphics;
  74.             g.lineStyle(4, 0x111111);
  75.             g.beginFill(0x993300);
  76.             g.drawRect(-5250475250);
  77.             g.endFill();
  78.             g.beginFill(0x33aaff);
  79.             g.drawRect(-5, -10475260);
  80.             g.endFill();
  81.         }
  82.         private var _tf : TextField;
  83.         private function onLoadSWF(e:Event):void {
  84.             _motion = new Sprite();
  85.             addChild(_motion);
  86.             _mc = walkMotion;
  87.             _motion.addChild(_mc);
  88.             _motion.x = 465 / 2;
  89.             _motion.y = 370;
  90.             _motion.z = 0;
  91.             addEventListener(Event.ENTER_FRAME, onEnterFrame);
  92.             stage.addEventListener(MouseEvent.CLICK, onClick);
  93.             this.mouseEnabled = true;
  94.             
  95.             _d = new Disc();
  96.             addChild(_d);
  97.             
  98.             _state = 0;
  99.             _rtx = _motion.x;
  100.             _rtz = _motion.z;
  101.         }
  102.         
  103.         private function onClick(e : MouseEvent) : void
  104.         {
  105.             if(_state == 0){
  106.                 _d.doThrowing();
  107.                 _t = 0;
  108.                 changeMotion(exclamationMotion);
  109.                 _state = 1;
  110.             }else if(_state == 3){
  111.                 _d.init();
  112.                 changeMotion(walkMotion);
  113.                 _state = 0;
  114.                 _rtx = _motion.x;
  115.                 _rtz = _motion.z;
  116.             }
  117.         }
  118.         private var _d : Disc;
  119.         private var _motion : Sprite;
  120.         private var _mc : MovieClip;
  121.         // 0 : 投擲待ち
  122.         // 1 : フリスビーを取りに行っている
  123.         // 2 : フリスビーをくわえて戻っている
  124.         // 3 : 戻った
  125.         private var _state : int;
  126.         
  127.         private const RETX : Number = 465 / 2;
  128.         private const RETZ : Number = 0;
  129.         
  130.         private var _t : int = -1;
  131.         private var _tb : int = 0;
  132.         
  133.         private var _rtx : Number;
  134.         private var _rtz : Number;
  135.         
  136.         private function onEnterFrame(e : Event) : void
  137.         {
  138.             if(_state == 0){
  139.                 if( (_motion.x - _rtx) * (_motion.x - _rtx) +
  140.                     (_motion.z - _rtz) * (_motion.z - _rtz) < 10 * 10){
  141.                     _rtx = Math.random() * 465;
  142.                     _rtz = Math.random() * 200;
  143.                 } 
  144.                 moveWanko(_rtx, _rtz, 4);
  145.                 dirWanko(_motion.x + _prevX, _motion.z + _prevZ);
  146.             }else if(_state == 1){
  147.                 _d.move();
  148.                 
  149.                 _t--;
  150.                 if(_t == -24){
  151.                     changeMotion(runMotion);
  152.                 }
  153.                 if(_t == _tb){
  154.                     _state = 2;
  155.                     return;
  156.                 }
  157. //                _tf.text = "" + (_d.y - _d.vy * 13);
  158.                 
  159.                 dirWanko(_d.x, _d.z);
  160.                 if(_t < -24){
  161.                     moveWanko(_d.x, _d.z, 7);
  162.                 
  163.                     var d2 : Number = 
  164.                         (_motion.x - _d.x) * (_motion.x - _d.x) +
  165.                         (_motion.z - _d.z) * (_motion.z - _d.z);
  166.                     
  167.                     if(_d.vy < 0 && Math.abs(_d.y - _d.vy * 13 - (350 - 165)) < 10 && d2 < 20 * 20){
  168.                         _t = 27;
  169.                         _tb = 14;
  170.                         changeMotion(highJumpMotion);
  171.                         return;
  172.                     }
  173.                 
  174.                     if(_d.y >= 350 && d2 < 30 * 30){
  175.                         _state = 2;
  176.                     }
  177.                 }
  178.             }else if(_state == 2){
  179.                 _t--;
  180.                 var at : Number = dirWanko(RETX, RETZ);
  181.                 if(_t == 0){
  182.                     changeMotion(runMotion);
  183.                 }
  184.                 
  185.                 if(_t > 0){ 
  186. //                    _tf.appendText("" + _t + "\t" + _mc.currentFrame + "\n");
  187.                     _d.y = 360 - _t * 13;
  188.                 }else{
  189.                     moveWanko(RETX, RETZ, 7);
  190.                     _d.y = 350;
  191.                     _d.y += [060, -6, -66][_mc.currentFrame]; // runMotionと同期
  192.                 }
  193.                 
  194.                 _d.x = _motion.x + 30 * Math.cos(at);
  195.                 _d.z = _motion.z + 30 * Math.sin(at);
  196.                 _d.rotationY = 0;
  197.                 _d.rotationX = -75;
  198.                 if( (_motion.x - RETX) * (_motion.x - RETX) +
  199.                     (_motion.z - RETZ) * (_motion.z - RETZ)
  200.                     < 10 * 10){
  201.                         changeMotion(MovieClip(selectR([wakeMotion, heartMotion, starMotion])));
  202.                         dirWanko(RETX, RETZ);
  203.                         _d.y = 360;
  204.                         _state = 3;
  205.                 }
  206.             }else if(_state == 3){
  207.             }
  208.                 
  209.             // Z-sort
  210.             if(getChildAt(1).z < getChildAt(2).z){
  211.                 swapChildrenAt(12);
  212.             }
  213.         }
  214.         
  215.         private function selectR(a : Array) : Object
  216.         {
  217.             return a[int(Math.random() * a.length)];
  218.         }
  219.         
  220.         private function changeMotion(mc : MovieClip) : void
  221.         {
  222.             if(_mc === mc)return;
  223.             _motion.removeChild(_mc);
  224.             _mc = mc;
  225.             _mc.gotoAndPlay(1);
  226.             _motion.addChild(_mc);
  227.         }
  228.         
  229.         // ワンコを(tx, tz)のほうに向ける
  230.         private function dirWanko(tx : Number, tz : Number) : Number
  231.         {
  232.             var at : Number = Math.atan2(tz - _motion.z, tx - _motion.x);
  233.             var t : Number = ((Math.PI / 2 + 2 * Math.PI / 20 * 2.5) + 2 * Math.PI + at) % (2 * Math.PI);
  234.         //    _tf.text = "" + _t + "\t" + int(t / (Math.PI * 2) * 20) + "\n";
  235.             _mc.wc2.wc3.gotoAndStop(int(t / (Math.PI * 2) * 20));
  236.             return at;
  237.         }
  238.         private var _prevX : Number = 0.0;
  239.         private var _prevZ : Number = -1.0;
  240.         // ワンコを(tx, tz)のほうに動かす。
  241.         // 直前とくらべてあまりに向きの角が急すぎるときは一定角まで回転する。
  242.         private function moveWanko(tx : Number, tz : Number, v : Number) : void
  243.         {
  244.             var mdr : Number = Math.sqrt(
  245.                 (tx - _motion.x) * (tx - _motion.x) + 
  246.                 (tz - _motion.z) * (tz - _motion.z)
  247.             ); 
  248.                     
  249.             var dx : Number, dz : Number;
  250.             if(mdr > 10){
  251.                 dx = (tx - _motion.x) / mdr;
  252.                 dz = (tz - _motion.z) / mdr;
  253.                 if(_prevX * dx + _prevZ * dz < Math.cos(20 * Math.PI / 180)){
  254.                     // 角度変化の上限
  255.                     var sgn : Number = _prevX * dz - _prevZ * dx;
  256.                     var nc : Number = Math.cos(20 * Math.PI / 180);
  257.                     var ns : Number = Math.sin(20 * Math.PI / 180);
  258.                     var nz : Number = _prevZ * nc + _prevX * ns * (sgn > 0 ? 1 : -1);
  259.                     var nx : Number = _prevX * nc + _prevZ * ns * (sgn > 0 ? -1 : 1);
  260.                     dx = nx;
  261.                     dz = nz;
  262.                 }
  263.                 _prevX = dx;
  264.                 _prevZ = dz;
  265.             }else{
  266.                 dx = 0;
  267.                 dz = 0;
  268.             }
  269.                     
  270.             // 等速移動
  271.             _motion.x += dx * v;
  272.             _motion.z += dz * v;
  273.         }
  274.     }
  275. }
  276. import flash.display.*;
  277. import flash.geom.*;
  278. class Disc extends Sprite
  279. {
  280.     private const R : Number = 30;
  281.     
  282.     public var vxz : Number;
  283.     public var vy : Number;
  284.     public var dir : Number;
  285.     public var vdir : Number;
  286.     public var omega : Number// フリスビーの回転角速度(揚力以外の移動には関係ない)
  287.     
  288.     public function Disc()
  289.     {
  290.         var mat : Matrix = new Matrix();
  291.         mat.scale(1/1638*R*21/1638*R*2);
  292.         
  293.         var g : Graphics = this.graphics;
  294.         g.lineStyle(1, 0x000000);
  295.         
  296.         g.beginGradientFill(GradientType.RADIAL, [0x00ee00, 0x005500], [11], [225255], mat);
  297.         g.drawCircle(00, R);
  298.         g.endFill();
  299.         
  300. //  g.beginGradientFill(GradientType.RADIAL, [0x00ee00, 0x005500], [1, 1], [200, 255], mat);
  301.         g.beginFill(0x00ee00);
  302.         g.drawCircle(000.9 * R);
  303.         g.endFill();
  304.         
  305.         g.beginFill(0x00ff00);
  306.         g.drawCircle(000.5 * R);
  307.         g.moveTo(00);
  308.         g.lineTo(00.5 * R);
  309.         this.rotationX = -90;
  310.         
  311.         makeBound(16);
  312.         
  313.         init();
  314.     }
  315.     
  316.     private function makeBound(n : int) : void
  317.     {
  318.         var L : Number = R * Math.sin(Math.PI / n);
  319.         for(var i : int = 0;i < n;i++){
  320.             var theta : Number = Math.PI * 2 / n * i;
  321.             var s : Shape = new Shape();
  322.             var g : Graphics = s.graphics;
  323.             g.lineStyle(1, 0x005500 + 0x001100 * (i % 2));
  324.             g.beginFill(0x005500 + 0x001100 * (i % 2));
  325.             g.drawRect(-L, 02 * L, 3);
  326.             g.endFill();
  327.             s.x = R * Math.cos(theta);
  328.             s.y = R * Math.sin(theta);
  329.             s.rotationX = 90;
  330.             s.rotationZ = 90+theta / Math.PI * 180;
  331.             addChild(s);
  332.         }
  333.     }
  334.     
  335.     public function init() : void
  336.     {
  337.         x = 465 / 2;
  338.         y = 120;
  339.         z = -200;
  340.         rotationX = -90;
  341.         rotationZ = 0;
  342.         rotationY = 0;
  343.     }
  344.     
  345.     public function doThrowing() : void
  346.     {
  347.         vxz = 9.0 + triRandom() * 2.0;
  348.         vy = 1.0 + triRandom() * 1.5;
  349.         omega = 50 + triRandom() * 20;
  350.         vdir = triRandom() * 0.01;
  351.         dir = -vdir * 5 + triRandom() * 0.1;
  352.         rotationX = -90 + (Math.random() + Math.random()) * 15 - 15;
  353.     }
  354.     
  355.     private static function triRandom() : Number
  356.     {
  357.         return Math.random() + Math.random() - 1;
  358.     }
  359.     
  360.     private const T : Number = 0.1;
  361.     private const SCALE : Number = 10;
  362.     private const MU : Number = Math.pow(0.95, T);
  363.     private const OMU : Number = Math.pow(0.7, T);
  364.     private const G : Number = 9.8;
  365.     // フリスビーを移動
  366.     public function move() : void
  367.     {
  368.         var theta : Number = Math.atan2(vy, vxz) / Math.PI * 180;
  369.         var v2 : Number = vy * vy + vxz * vxz;
  370.         // いんちき揚力
  371.         var L : Number = (1.0 - 1 / omega) * vxz / Math.sqrt(v2);
  372.             
  373.         // 加速と減衰
  374.         omega *= OMU;
  375.         rotationY += omega;
  376.         if(omega < 1.0)omega = 1.0;
  377.         vxz *= MU;
  378.         vy += (L - 1.0) * G * T * T;
  379.         vy *= MU;
  380.            
  381.         // 飛行中だけ移動
  382.         if(y < 350){
  383.             x += vxz * Math.sin(dir) * T * SCALE;
  384.             z += vxz * Math.cos(dir) * T * SCALE;
  385.             y -= vy * T * SCALE;
  386.             dir += vdir;
  387.         }
  388.     }
  389. }
flash swf thumbnail play
出題者からのコメント
細かい演出のおかげで遊んでいると愛着を感じてきます。ワンダフル!!
Comments from King
I am deeply attached to it while I'm playing this detailed flash. Wonderfl!

Bishopbuccchi

  1. // forked from checkmate's Checkmate vol.5 Amateur
  2. /*
  3.  * マウスで蝶を操作。犬が追いかけるよ!
  4.  *  上:蝶を奥へ
  5.  *  下:蝶を手前へ
  6.  *  左:蝶を左へ
  7.  *  右:蝶を右へ
  8.  */
  9. package {
  10.     import flash.display.*;
  11.     import flash.events.Event;
  12.     
  13.     public class Amateur extends Sprite {
  14.         private const FOCUS:Number = 400;
  15.         private const WIDTH:Number = stage.stageWidth;
  16.         private const HEIGHT:Number = stage.stageHeight;
  17.         private const DIS_X:Number = stage.stageWidth*.5;
  18.         private const DIS_Y:Number = 300;
  19.         private var _butterfly:Hae;
  20.         private var _wanco:Wanco;
  21.         private var _shadow:Shadow;
  22.         private var _camera:MyStatus;
  23.         
  24.         public function Amateur(){
  25.             super();
  26.             stage.scaleMode = StageScaleMode.NO_SCALE;
  27.             stage.align = StageAlign.TOP_LEFT;
  28.             
  29.             _butterfly = new Hae(WIDTH, HEIGHT);
  30.             addChild(_butterfly);
  31.             
  32.             _shadow = new Shadow(30);
  33.             addChild(_shadow);
  34.             
  35.             _wanco = new Wanco(_butterfly);
  36.             addChild(_wanco);
  37.             
  38.             _camera = new MyStatus(DIS_X, 50, -100);
  39.             addChild(_camera);
  40.             
  41.             addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
  42.         }
  43.         
  44.         private function onEnterFrameHandler(e:Event):void {
  45.             //2.5Dに変換
  46.             var ratio:Number;
  47.             //蝶
  48.             ratio = FOCUS / (_butterfly.myZ-_camera.myZ);
  49.             _butterfly.x = (_camera.myX-_butterfly.myX) *ratio +DIS_X;
  50.             _butterfly.y = (_camera.myY-_butterfly.myY) *ratio +DIS_Y;
  51.             _butterfly.scaleX = _butterfly.scaleY = ratio;
  52.             //犬
  53.             ratio = FOCUS / (_wanco.myZ-_camera.myZ);
  54.             _wanco.x = (_camera.myX-_wanco.myX) *ratio +DIS_X;
  55.             _wanco.y = (_camera.myY-_wanco.myY) *ratio +DIS_Y;
  56.             _wanco.scaleX = _wanco.scaleY = ratio;
  57.             //影
  58.             _shadow.x = _wanco.x;
  59.             _shadow.y = (_camera.myY) *ratio +DIS_Y;
  60.             _shadow.scaleX = ratio;
  61.             _shadow.scaleY = ratio*ratio/10;
  62.         }
  63.     }
  64. }
  65. import flash.display.Sprite;
  66. import flash.events.Event;
  67. class MyStatus extends Sprite{
  68.     public var myX:Number;
  69.     public var myY:Number;
  70.     public var myZ:Number;
  71.     
  72.     public function MyStatus(mX:Number=0, mY:Number=0, mZ:Number=0){
  73.         myX = mX;
  74.         myY = mY;
  75.         myZ = mZ;
  76.     }
  77. }
  78. //影
  79. class Shadow extends Sprite {
  80.     public function Shadow(r:Number){
  81.         graphics.beginFill(0xDDDDDD, 1);
  82.         graphics.drawCircle(0, -30, r);
  83.     }
  84. }
  85. //蝶
  86. class Hae extends MyStatus {
  87.     private var _w:Number;
  88.     private var _h:Number;
  89.     private var _hane:Sprite;
  90.     private var _rad:Number = 0;        //回転角
  91.     private var _radius:Number = 20;    //回転半径
  92.     private var _base:Object;            //基準位置
  93.     
  94.     public function Hae(w:Number, h:Number){
  95.         super();
  96.         _w = w;
  97.         _h = h;
  98.         _base = {x:0, y:110, z:0};
  99.         myY = _base.y;
  100.         //蝶を描画
  101.         _hane = new Sprite();
  102.         _hane.graphics.beginFill(0x999999, 1);
  103.         _hane.graphics.drawCircle(-2.5, -12);
  104.         _hane.graphics.beginFill(0x999999, 1);
  105.         _hane.graphics.drawCircle(2.5, -12);
  106.         addChild(_hane);
  107.         graphics.beginFill(0x000000, 1);
  108.         graphics.drawCircle(001.5);
  109.         //
  110.         addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
  111.     }
  112.     
  113.     private function onEnterFrameHandler(e:Event):void {
  114.         _base.x += (_w-stage.mouseX-myX)*.1;
  115.         _base.z += (_h*2-stage.mouseY*2-myZ)*.1;
  116.         _rad = (_rad <= 0)? _rad-.15+(Math.PI*2) : _rad-.15;
  117.         myX = _base.x + Math.cos(_rad)*_radius;
  118.         myZ = _base.z + Math.sin(_rad)*_radius;
  119.         //はばたきアニメーション
  120.         _hane.alpha = (_hane.alpha==1)? .4 : 1;
  121.     }
  122. }
  123. import flash.display.*;
  124. import flash.events.*;
  125. import flash.utils.*;
  126. import flash.net.*;
  127. import flash.system.*;
  128. import jp.progression.commands.*;
  129. import jp.progression.commands.lists.*;
  130. import jp.progression.commands.display.*;
  131. import jp.progression.commands.net.*;
  132. import jp.progression.commands.tweens.*;
  133. import jp.progression.events.*;
  134. import org.libspark.betweenas3.BetweenAS3;
  135. import org.libspark.betweenas3.easing.*;
  136. import org.libspark.betweenas3.tweens.ITween;
  137. import org.libspark.betweenas3.events.TweenEvent;
  138. class Wanco extends MyStatus {
  139.     public static var GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoAmateur.swf";
  140.     private var stayMotion:MovieClip;
  141.     private var _mark:MyStatus;
  142.     private var _base:Object;    //基準位置
  143.     private var _local:Object;    //ローカル位置
  144.     
  145.     public function Wanco(hae:MyStatus){
  146.         super();
  147.         _mark = hae;
  148.         _base = {x:0, y:0, z:0};
  149.         _local = {x:0, y:0, z:0};
  150.         
  151.         var com:SerialList = new SerialList();
  152.         com.addCommand(
  153.             new LoadSWF( new URLRequest( GRAPHICS_URL ) ),
  154.             function():void {
  155.                 var loader:Loader = Loader( this.latestData );
  156.                 var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;
  157.                 
  158.                 stayMotion = new ( domain.getDefinition( "StayMotion" ) as Class );
  159.             }
  160.         );
  161.         com.addEventListener(ExecuteEvent.EXECUTE_COMPLETE,onLoadSWF);
  162.         com.execute();
  163.     }
  164.     
  165.     private function onLoadSWF(e:Event):void {
  166.         addChild(stayMotion as MovieClip);
  167.         addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
  168.         //ジャンプアニメーション設定
  169.         var t:ITween =    BetweenAS3.parallel(
  170.                             BetweenAS3.serial(
  171.                                 BetweenAS3.tween(stayMotion, { scaleX:.8, scaleY:1.2 }, { scaleX:1.1, scaleY:.8 }, .25, Sine.easeOut),
  172.                                 BetweenAS3.tween(stayMotion, { scaleX:1.1, scaleY:.8 }, null, .75, Sine.easeOutIn)
  173.                             ),
  174.                             BetweenAS3.serial(
  175.                                 BetweenAS3.tween(_local, { y:50 }, null, .5, Sine.easeOut),
  176.                                 BetweenAS3.tween(_local, { y:0 }, null, .5, Sine.easeIn)
  177.                             )
  178.                         );
  179.         t = BetweenAS3.scale(t, .8);
  180.         t.stopOnComplete = false;
  181.         t.play();
  182.     }
  183.     
  184.     private function onEnterFrameHandler(e:Event):void {
  185.         _base.x += (_mark.myX-_base.x)*.05;
  186.         _base.z += (_mark.myZ-_base.z)*.05;
  187.         myX = _base.x;
  188.         myY = _local.y;
  189.         myZ = _base.z;
  190.         //向き変更
  191.         var myRotate:Number = Math.atan2(_base.x-_mark.myX, _base.z-_mark.myZ) *180 /Math.PI + 360+30;
  192.         var frame:Number = Math.floor(myRotate%360/18)+1;
  193.         stayMotion.wc2.wc3..gotoAndStop(frame);
  194.     }
  195. }
flash swf thumbnail play
出題者からのコメント
「蠅だろ!!」と思った時点で負けですね。
動きも好きですがタイトルにやられました。
Comments from King
"Is it a fly?" No, you are wrong.
Of course movement is well done but I like the title.

KnightosamX

  1. // forked from checkmate's Checkmate vol.5 Amateur
  2. /**
  3.  * 遊び方:
  4.  * 1. フルスクリーンにします。
  5.  * 2. マウスが右向きになるように置きます。
  6.  * 3. マウスを左手で押さえます。
  7.  * 4. 右手をマウスホイールの上に置き、左右に動かします。
  8.  * 5. 左クリック、ホイールクリックしてみると...?
  9.  * 
  10.  * ヒント:
  11.  *    ホイールクリック3回
  12.  * 
  13.  *  ソースはメッチャクチャのグッチャグチャ。あんまり見ないでね。
  14.  *  http://flash-scope.com/?p=709
  15.  */
  16. package {
  17.     import flash.display.*;
  18.     import flash.events.*;
  19.     import flash.utils.*;
  20.     import flash.net.*;
  21.     import flash.system.*;
  22.     import jp.progression.commands.*;
  23.     import jp.progression.commands.lists.*;
  24.     import jp.progression.commands.display.*;
  25.     import jp.progression.commands.net.*;
  26.     import jp.progression.commands.tweens.*;
  27.     import jp.progression.events.*;
  28.     
  29.     import org.libspark.betweenas3.BetweenAS3;
  30.     import org.libspark.betweenas3.easing.*;
  31.     import org.libspark.betweenas3.tweens.ITween;
  32.     import org.libspark.betweenas3.events.TweenEvent;
  33.     import flash.system.Security;
  34.     
  35.     public class Nadenade extends Sprite {
  36.         public static var GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoProfessional.swf";
  37.         
  38.         public var stayMotion:MovieClip;
  39.         public var jumpMotion:MovieClip;
  40.         public var highJumpMotion:MovieClip;
  41.         public var walkMotion:MovieClip;
  42.         public var runMotion:MovieClip;
  43.         public var squatMotion:MovieClip;
  44.         public var questionMotion:MovieClip;
  45.         public var exclamationMotion:MovieClip;
  46.         public var heartMotion:MovieClip;
  47.         public var poutMotion:MovieClip;
  48.         public var starMotion:MovieClip;
  49.         public var singMotion:MovieClip;
  50.         public var sleepMotion:MovieClip;
  51.         public var wakeMotion:MovieClip;
  52.         
  53.         private const SIZE:uint = 465;
  54.         private var hand:MyHand;
  55.         private var lc:LocalConnectionEx;
  56.         private var motionList:Array;
  57.         private var guchaflg:Boolean = false;
  58.         private var singflg:Boolean = false;
  59.         private var achaflg:Boolean = false;
  60.         private var eraseflg:Boolean = false;
  61.         private var lastAchaTime:int;
  62.         
  63.         private const NUM:uint = 20;
  64.         private var particles:Array = [];
  65.         private var fragments:Array = [];
  66.         
  67.         private const HX:Number = 0;
  68.         private const HY:Number = 50;
  69.         
  70.         public function Nadenade () {
  71.             super();
  72.             //Security.allowDomain("flash-scope.com");
  73.             stage.scaleMode = StageScaleMode.NO_SCALE;
  74.             stage.align = StageAlign.TOP_LEFT;
  75.             var com:SerialList = new SerialList();
  76.             com.addCommand(
  77.                 new LoadSWF( new URLRequest( GRAPHICS_URL ) ),
  78.                 function():void {
  79.                     var loader:Loader = Loader( this.latestData );
  80.                     var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;
  81.                     
  82.                     stayMotion = new ( domain.getDefinition( "StayMotion" ) as Class );
  83.                     jumpMotion = new ( domain.getDefinition( "JumpMotion" ) as Class );
  84.                     highJumpMotion = new ( domain.getDefinition( "HighJumpMotion" ) as Class );
  85.                     walkMotion = new ( domain.getDefinition( "WalkMotion" ) as Class );
  86.                     runMotion = new ( domain.getDefinition( "RunMotion" ) as Class );
  87.                     squatMotion = new ( domain.getDefinition( "SquatMotion" ) as Class );
  88.                     questionMotion = new ( domain.getDefinition( "QuestionMotion" ) as Class );
  89.                     exclamationMotion = new ( domain.getDefinition( "ExclamationMotion" ) as Class );
  90.                     heartMotion = new ( domain.getDefinition( "HeartMotion" ) as Class );
  91.                     poutMotion = new ( domain.getDefinition( "PoutMotion" ) as Class );
  92.                     starMotion = new ( domain.getDefinition( "StarMotion" ) as Class );
  93.                     singMotion = new ( domain.getDefinition( "SingMotion" ) as Class );
  94.                     sleepMotion = new ( domain.getDefinition( "SleepMotion" ) as Class );
  95.                     wakeMotion = new ( domain.getDefinition( "WakeMotion" ) as Class );
  96.                 },
  97.                 hand = new MyHand()
  98.             );
  99.             com.addEventListener(ExecuteEvent.EXECUTE_COMPLETE,onLoadSWF);
  100.             com.execute();
  101.         }
  102.         
  103.         private function onLoadSWF(e:Event):void {
  104.             motionList = [
  105.                 stayMotion,        //0
  106.                 walkMotion,        //1
  107.                 runMotion,        //2
  108.                 squatMotion,    //3
  109.                 questionMotion,    //4
  110.                 exclamationMotion,//5
  111.                 heartMotion,    //6
  112.                 poutMotion,        //7
  113.                 singMotion,        //8
  114.                 sleepMotion,    //9
  115.                 wakeMotion        //10
  116.             ];
  117.             
  118.             for eachvar motion:MovieClip in motionList ) {
  119.                 addChild(motion);
  120.                 motion.x = SIZE / 2;
  121.                 motion.y = SIZE / 2 + 100;
  122.                 motion.scaleX = motion.scaleY = 3;
  123.             }
  124.             freeMotion();
  125.             
  126.             hand.x = HX;
  127.             hand.y = HY;
  128.             hand.alpha = 0;
  129.             addChild(hand);
  130.             var handframe:int = 0;
  131.             var cnt:int = 0;
  132.             var lastNadeTime:int;
  133.             const SPEED:uint = 2;
  134.             var buruburu:Boolean = false;
  135.             stage.addEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
  136.                 resetHand();
  137.                 eraseflg = true;
  138.                 if (!singflg && !guchaflg && !achaflg) {
  139.                     if (e.delta > 0) cnt++;
  140.                     else if (e.delta < 0) cnt--;
  141.                     if (Math.abs(cnt) >= SPEED) {
  142.                         handframe += int(cnt / SPEED);
  143.                         cnt = 0;
  144.                         if (handframe < 0) handframe = 0;
  145.                         else if (handframe > 4) handframe = 4;
  146.                     }
  147.                     hand.show(handframe);
  148.                     hand.alpha = 0.6;
  149.                     lastNadeTime = getTimer();
  150.                     showMotion(6);
  151.                 }
  152.             });
  153.             var tim:uint = 0;
  154.             addEventListener(Event.ENTER_FRAME, function(e:Event):void {
  155.                 if (++tim % 2 == 0) {
  156.                     tim = 0;
  157.                     if (!achaflg && !guchaflg && hand.alpha > 0 && getTimer() - lastNadeTime > 500) {
  158.                         eraseflg = true;
  159.                         hand.alpha -= 0.1;
  160.                         if (hand.alpha <= 0) {
  161.                             eraseflg = false;
  162.                             freeMotion();
  163.                         }
  164.                     }
  165.                     if (achaflg) {
  166.                         buruburu = !buruburu;
  167.                         if (buruburu) hand.x = HX + 10;
  168.                         else hand.x = HX;
  169.                     }
  170.                 }
  171.                 
  172.                 for (var i:uint = 0; i < particles.length; i++) {
  173.                     var p:Particle = particles[i];
  174.                     if(p && p.y < 500){
  175.                         p.vy += 1.5;
  176.                         p.vx *= 0.987;
  177.                         p.vy *= 0.987;
  178.                         p.x += p.vx;
  179.                         p.y += p.vy;
  180.                         fragments[i].x = p.x;
  181.                         fragments[i].y = p.y;
  182.                     }else if(fragments[i]){
  183.                         removeChild(fragments[i]);
  184.                         fragments[i] = null;
  185.                         particles[i] = null;
  186.                     }
  187.                 }
  188.             });
  189.             wheelClickHandler();
  190.         }
  191.         
  192.         private function wheelClickHandler():void {
  193.             var loader:Loader = new Loader();
  194.             var request:URLRequest = new URLRequest("http://flash-scope.com/wonderfl/ClickTest/mouse.swf");
  195.             loader.load(request);
  196.             
  197.             lc = new LocalConnectionEx();
  198.             lc.allowDomain('*');
  199.             lc.connect("_wonderflconnection");
  200.             
  201.             var frame:int = 1;
  202.             var guchaNum:uint = 0;
  203.             
  204.             lc.leftDown = function():void {
  205.                 resetHand();
  206.                 if (!singflg && !guchaflg && !achaflg && !eraseflg) {
  207.                     showMotion(8);
  208.                     addEventListener(Event.ENTER_FRAME, function(e:Event):void {
  209.                         if (!singflg) { //do once
  210.                             singMotion.gotoAndPlay(1);
  211.                             singMotion.wc2.wc3.gotoAndPlay(2);
  212.                             singflg = true;
  213.                         }
  214.                         frame++;
  215.                         if (frame > 31) {
  216.                             singflg = false;
  217.                             frame = 1;
  218.                             singMotion.stop();
  219.                             removeEventListener(Event.ENTER_FRAME, arguments.callee);
  220.                             freeMotion();
  221.                         }
  222.                     });
  223.                 }
  224.             };
  225.             
  226.             lc.wheelDown = function():void {
  227.                 resetHand();
  228.                 if (!singflg && !guchaflg && !achaflg) {
  229.                     showMotion(10);
  230.                     guchaflg = true;
  231.                     hand.alpha = 0.6;
  232.                     BetweenAS3.parallel(
  233.                         BetweenAS3.tween(hand, {y:120},null,0.1),
  234.                         BetweenAS3.tween(wakeMotion, { height:50, width:250 }, null0.3, Back.easeOutWith(5.0))
  235.                     ).play();
  236.                     createFragment();
  237.                 }
  238.             };
  239.             
  240.             lc.wheelUp = function():void {
  241.                 if(!singflg && guchaflg && !achaflg){
  242.                     var tween:ITween = BetweenAS3.tween(wakeMotion, { height:55.8 * 3, width:60.45 * 3 }, null0.5, Elastic.easeOut);
  243.                     tween.addEventListener(TweenEvent.COMPLETE, function(e:TweenEvent):void {
  244.                         freeMotion();
  245.                         guchaflg = false;
  246.                         eraseflg = false;
  247.                         if (++guchaNum >= 3) {
  248.                             lastAchaTime = getTimer();
  249.                             guchaNum = 0;
  250.                             hand.show(5);
  251.                             hand.alpha = 1;
  252.                             achaflg = true;
  253.                             showMotion(4);
  254.                         }
  255.                     });
  256.                     BetweenAS3.parallel(
  257.                         BetweenAS3.tween(hand, {y:HY},null,0.05),
  258.                         tween
  259.                     ).play();
  260.                 }
  261.             };
  262.         }
  263.         
  264.         private function showMotion(num:uint):void {
  265.             var i:uint = 0;
  266.             for eachvar motion:MovieClip in motionList ) {
  267.                 if (i++ == num) {
  268.                     motion.visible = true;
  269.                     //motion.stop();
  270.                 }else {
  271.                     motion.visible = false;
  272.                     //motion.gotoAndPlay(1);
  273.                 }
  274.             }
  275.         }
  276.         
  277.         private function freeMotion():void {
  278.             var num:uint = int(Math.random() * 8);
  279.             switch(num) {
  280.                 case 6: num = 7break;
  281.                 case 7: num = 9break;
  282.             }
  283.             showMotion(num);
  284.         }
  285.         
  286.         private function resetHand():void {
  287.             if (achaflg && getTimer()-lastAchaTime>1000) {
  288.                 hand.x = HX;
  289.                 achaflg = false;
  290.                 eraseflg = false;
  291.                 hand.show(0);
  292.                 hand.alpha = 0;
  293.             }
  294.         }
  295.         
  296.         private function createFragment(e:MouseEvent = null):void {
  297.             var l:uint = fragments.length;
  298.             for (var i:uint = 0; i < NUM; i++) {
  299.                 var p:Particle = new Particle(465/233040 * Math.random()-20, -20 * Math.random());
  300.                 particles.push(p);
  301.                 
  302.                 var s:Sprite = new Sprite();
  303.                 s.graphics.lineStyle(5, 0x330000);
  304.                 s.graphics.beginFill(0xCC6633);
  305.                 //s.graphics.beginFill(0xFFFFFF*Math.random());
  306.                 s.graphics.drawCircle(005);
  307.                 s.graphics.endFill();
  308.                 s.x = p.x;
  309.                 s.y = p.y;
  310.                 fragments.push(s);
  311.                 addChildAt(fragments[l + i],0);
  312.                 //addChild(fragments[l + i]);
  313.             }
  314.         }
  315.         
  316.     }
  317. }
  318. import flash.display.Loader;
  319. import flash.display.Sprite;
  320. import flash.net.URLRequest;
  321. import flash.system.LoaderContext;
  322. class MyHand extends Sprite 
  323. {
  324.     public var images:Array = [];
  325.     public function MyHand():void 
  326.     {
  327.         for (var i:uint = 1; i <= 6; i++){
  328.             var loader:Loader = new Loader();
  329.             loader.load(new URLRequest("http://flash-scope.com/wonderfl/Wanco/img"+i+".png"), new LoaderContext(true));
  330.             images.push(loader);
  331.             addChild(images[i - 1]);
  332.         }
  333.         show(0);
  334.     }
  335.     public function show(num:uint):void {
  336.         for (var i:uint = 0; i < 6; i++) {
  337.             if(i==num) images[i].visible = true;
  338.             else images[i].visible = false;
  339.         }
  340.         
  341.     }
  342. }
  343. class Particle 
  344. {
  345.     public var x:Number;
  346.     public var y:Number;
  347.     public var vx:Number;
  348.     public var vy:Number;
  349.     
  350.     public function Particle(_x:Number, _y:Number,_vx:Number,_vy:Number):void {
  351.         x = _x;
  352.         y = _y;
  353.         vx = _vx;
  354.         vy = _vy;
  355.     }
  356. }
  357. import flash.net.LocalConnection; 
  358. dynamic class LocalConnectionEx extends LocalConnection  
  359. {
  360. }
flash swf thumbnail play
出題者からのコメント
マウスホイールを使ってワンコをなでるというアイディアが良いですね。
ホイールを机に付けてコロコロやるとさらに臨場感がアップ!
※windowsでご覧ください
Comments from King
The idea using scroll wheel to play with Wanko is great.
Moreover, it become even more realistic by putting mouse on table.
*See more on Windows

ad

Professional

Queenuwi

  1. // forked from checkmate's Checkmate vol.5 Professenal
  2. // ワンコといえばワンコそば。いろんな動きをするワンコを捕まえて食べよう!
  3. // え、わんこはお椀のことだって?細かいことは( ゚ε゚)キニシナイ!!
  4. // 申し訳程度に音も出るよ
  5. package {
  6.     import flash.display.*;
  7.     import flash.events.*;
  8.     import flash.geom.*;
  9.     import flash.net.*;
  10.     import flash.system.*;
  11.     import flash.text.*;
  12.     import flash.utils.*;
  13.     import jp.progression.commands.*;
  14.     import jp.progression.commands.lists.*;
  15.     import jp.progression.commands.display.*;
  16.     import jp.progression.commands.net.*;
  17.     import jp.progression.commands.tweens.*;
  18.     import jp.progression.events.*;
  19.     import org.si.sion.*;
  20.     
  21.     [SWF(frameRate="30", backgroundColor="#aaaa55")]
  22.     public class WankoSoba extends Sprite {
  23.         public static var GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoProfessional.swf";
  24.         
  25.         public var stayMotion:MovieClip;
  26.         public var jumpMotion:MovieClip;
  27.         public var highJumpMotion:MovieClip;
  28.         public var walkMotion:MovieClip;
  29.         public var runMotion:MovieClip;
  30.         public var squatMotion:MovieClip;
  31.         public var questionMotion:MovieClip;
  32.         public var exclamationMotion:MovieClip;
  33.         public var heartMotion:MovieClip;
  34.         public var poutMotion:MovieClip;
  35.         public var starMotion:MovieClip;
  36.         public var singMotion:MovieClip;
  37.         public var sleepMotion:MovieClip;
  38.         public var wakeMotion:MovieClip;
  39.         
  40.         
  41.         public function WankoSoba(){
  42.             super();
  43.             stage.scaleMode = StageScaleMode.NO_SCALE;
  44.             stage.align = StageAlign.TOP_LEFT;
  45.             
  46.                         Wonderfl.capture_delay(5);
  47.             var com:SerialList = new SerialList();
  48.             com.addCommand(
  49.                 new LoadSWF( new URLRequest( GRAPHICS_URL ) ),
  50.                 function():void {
  51.                     var loader:Loader = Loader( this.latestData );
  52.                     var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;
  53.                     
  54.                     stayMotion = new ( domain.getDefinition( "StayMotion" ) as Class );
  55.                     jumpMotion = new ( domain.getDefinition( "JumpMotion" ) as Class );
  56.                     highJumpMotion = new ( domain.getDefinition( "HighJumpMotion" ) as Class );
  57.                     walkMotion = new ( domain.getDefinition( "WalkMotion" ) as Class );
  58.                     runMotion = new ( domain.getDefinition( "RunMotion" ) as Class );
  59.                     squatMotion = new ( domain.getDefinition( "SquatMotion" ) as Class );
  60.                     questionMotion = new ( domain.getDefinition( "QuestionMotion" ) as Class );
  61.                     exclamationMotion = new ( domain.getDefinition( "ExclamationMotion" ) as Class );
  62.                     heartMotion = new ( domain.getDefinition( "HeartMotion" ) as Class );
  63.                     poutMotion = new ( domain.getDefinition( "PoutMotion" ) as Class );
  64.                     starMotion = new ( domain.getDefinition( "StarMotion" ) as Class );
  65.                     singMotion = new ( domain.getDefinition( "SingMotion" ) as Class );
  66.                     sleepMotion = new ( domain.getDefinition( "SleepMotion" ) as Class );
  67.                     wakeMotion = new ( domain.getDefinition( "WakeMotion" ) as Class );
  68.                     
  69.                 }
  70.             );
  71.             // お椀を描く
  72.             var mat : Matrix = new Matrix();
  73.             mat.scale(1/1638*465/221/1638*465/2*RATIO*2);
  74.             mat.translate(465 / 2280);
  75.             graphics.lineStyle(2, 0x000000);
  76.             graphics.beginGradientFill(GradientType.RADIAL, [0xaa0000, 0x440000], [11], [100255], mat);
  77.             var W : Number = 465 * 0.4;
  78.             graphics.drawEllipse(465/2 - W, 250 - W * RATIO, W * 2, W * RATIO * 2);
  79.         
  80.             _sd = new SiONDriver();
  81.             
  82.             _tf = new TextField();
  83.             addChild(_tf);
  84.             
  85.             _tfScore = new TextField();
  86.             _tfScore.autoSize = "left";
  87.             _tfScore.defaultTextFormat = new TextFormat("fantasy"30);
  88.             _tfScore.selectable = false;
  89.             addChild(_tfScore);
  90.             
  91.             _tfTime = new TextField();
  92.             _tfTime.autoSize = "right";
  93.             _tfTime.x = 465;
  94.             _tfTime.defaultTextFormat = new TextFormat("fantasy"30);
  95.             _tfTime.selectable = false;
  96.             addChild(_tfTime);
  97.             
  98.             _tfStart = new TextField();
  99.             _tfStart.autoSize = "center";
  100.             _tfStart.x = 465 / 2;
  101.             _tfStart.y = 420;
  102.             _tfStart.defaultTextFormat = new TextFormat("fantasy"40, 0xffdd33);
  103.             _tfStart.text = " START ";
  104.             _tfStart.background = true;
  105.             _tfStart.backgroundColor = 0x773333;
  106.             _tfStart.selectable = false;
  107.             addChild(_tfStart);
  108.             com.addEventListener(ExecuteEvent.EXECUTE_COMPLETE,onLoadSWF);
  109.             com.execute();
  110.         }
  111.         private const RATIO : Number = 200 / (465 / 2.0);
  112.         private var _tf : TextField; // デバッグ用
  113.         private var _tfScore : TextField; // スコア表示
  114.         private var _tfTime : TextField; // 残り時間表示
  115.         private var _tfStart : TextField; // スタートボタン
  116.         private var _sd : SiONDriver;
  117.         
  118.         private const LIMTIME : int = 30 * 1000// 時間制限
  119.         private var _endTime : int;
  120.         
  121.         private var _sobaClips : Array// モーション配列
  122.         private var _sobaKind : int;
  123.         // 0 :
  124.         // 1 : 落下中
  125.         // 2 : 回転中
  126.         private var _state : int;
  127.         private var _frameCount : int;
  128.         private var _score : int;
  129.     
  130.         private var _soba : MovieClip;
  131.     
  132.         private function onLoadSWF(e:Event):void {
  133.             _sobaClips = [
  134.                 stayMotion, jumpMotion, highJumpMotion, 
  135.                 walkMotion, runMotion, squatMotion,
  136.                 questionMotion, exclamationMotion, heartMotion, 
  137.                 poutMotion, starMotion, singMotion, 
  138.                 sleepMotion
  139.                 ];
  140.             _tfStart.addEventListener(MouseEvent.CLICK, onStart);
  141.         }
  142.                 
  143.         private function onStart(e : MouseEvent) : void
  144.         {
  145.             initGame();
  146.         }
  147.                 
  148.         private function initGame() : void
  149.         {
  150.             _tfStart.visible = false;
  151.             _score = 0;
  152.             _endTime = getTimer() + LIMTIME;
  153.             _tfScore.text = "スコア : " + 0 + "杯\n";
  154.             appendSoba();
  155.         }
  156.         private function endGame() : void
  157.         {
  158.             removeSoba();
  159.             _tfStart.visible = true;
  160.             _state = 0;
  161.         }
  162.         private function appendSoba() : void
  163.         {
  164.             _sobaKind = Math.random() * _sobaClips.length;
  165.             _soba = _sobaClips[_sobaKind];
  166.             _soba.x = 0;
  167.             _soba.y = 0;
  168.             _soba.z = -400;
  169.             _soba.r = 465 * 0.3 * (1.0 - Math.random() * Math.random()); 
  170.             _soba.theta = Math.random() * 2 * Math.PI;
  171.             _soba.omega = Math.random() * 0.4 - 0.2;
  172.             if(_soba === runMotion){
  173.                 _soba.omega = Math.random() * 1.2 - 0.6;
  174.             }
  175.             _soba.vz = 25;
  176.             _soba.gotoAndStop(1);
  177.             addChild(_soba);
  178.             addEventListener(Event.ENTER_FRAME, onEnterFrame);
  179.             _frameCount++;
  180.             
  181.             _state = 1;
  182.         }
  183.         private function removeSoba() : void
  184.         {
  185.             _soba.removeEventListener(MouseEvent.MOUSE_DOWN, onSobaMouseDown);
  186.             _soba.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
  187.             removeChild(_soba);
  188.         }
  189.         private function onEnterFrame(e : Event) : void
  190.         {
  191.             _frameCount++;
  192.             if(_state == 1){
  193.                 // 落下
  194.                 _soba.vz += 2;
  195.                 _soba.z += _soba.vz;
  196.                 if(_soba.z > 0){
  197.                     _soba.z = 0;
  198.                     _soba.play();
  199.                     _state = 2;
  200.                     _frameCount = 0;
  201.                     // star:n体分身
  202.                     if(_soba == starMotion){
  203.                         _soba.nBody = int(Math.random() * 4) + 2;
  204.                     }
  205.                     _soba.addEventListener(MouseEvent.MOUSE_DOWN, onSobaMouseDown);
  206.                     return;
  207.                 }
  208.             }else{
  209.                 // 回転
  210.                 _soba.r *= 0.98;
  211.                 _soba.omega *= 0.98;
  212.                 _soba.theta += _soba.omega;
  213.                 // question:ワープ
  214.                 if(_soba == questionMotion && _frameCount % 15 == 0){
  215.                     _soba.theta = Math.random() * Math.PI * 2;
  216.                 }
  217.                 // exclamation:とびあがる
  218.                 if(_soba == exclamationMotion){
  219.                     if(_soba.z == 0 && _soba.hitTestPoint(mouseX, mouseY, true)){
  220.                         _soba.vz = -70;
  221.                         _soba.z += _soba.vz;
  222.                     }else{
  223.                         if(_soba.z != 0){
  224.                             _soba.vz+=7;
  225.                             _soba.z += _soba.vz;
  226.                             if(_soba.z > 0)_soba.z = 0;
  227.                         }
  228.                     }
  229.                 }
  230.                 // exclamation:逃げる
  231.                 if(_soba == sleepMotion){
  232.                     if(Math.abs(_soba.omega) < 0.1 && _soba.hitTestPoint(mouseX, mouseY, true)){
  233.                         _soba.omega = Math.random() < 0.5 ? 0.4 : -0.4;
  234.                     }
  235.                 }
  236.                 // sing:再加速
  237.                 if(_soba == singMotion && _frameCount % 10 == 0){
  238.                     _soba.omega = Math.random() * 0.8 - 0.4;
  239.                 }
  240.                 // star:n体分身
  241.                 if(_soba == starMotion){
  242.                     _soba.omega = 6.28 / _soba.nBody;
  243.                 }
  244.                 // pout:小さくなる
  245.                 if(_soba == poutMotion){
  246.                     var scale : Number = (2 + Math.cos(_frameCount * 10 / 180 * 3.14)) / 3;
  247.                     _soba.scaleX = scale;
  248.                     _soba.scaleY = scale;
  249.                 }
  250.                 // heart:外側に移動する
  251.                 if(_soba == heartMotion){
  252.                     _soba.r *= Math.pow(465 / 3 / _soba.r, 1 / 4);
  253.                 }
  254.                 // squat:その場に止まる
  255.                 if(_soba == squatMotion){
  256.                     _soba.r /= 0.98;
  257.                     _soba.omega = 0;
  258.                 }
  259.                 // walk:角速度が減衰しない
  260.                 if(_soba == walkMotion){
  261.                     _soba.r /= 0.98;
  262.                 }
  263.             }
  264.             _soba.x = _soba.r * Math.cos(_soba.theta) + 465 / 2;
  265.             _soba.y = _soba.r * Math.sin(_soba.theta) * RATIO + 250 + 20;
  266.             turn(_soba);
  267.             
  268.             var leftTime : int = _endTime - getTimer();
  269.             if(leftTime > 0){
  270.                 _tfTime.text = "残り " + int(leftTime / 1000) + "秒";
  271.             }else{
  272.                 endGame();
  273.             }
  274.         }
  275.         // ワンコが押されたとき
  276.         private function onSobaMouseDown(e : MouseEvent) : void
  277.         {
  278.             _sd.play("%5 @5 t180l16o6ecec");
  279.             _score++;
  280.             _tfScore.text = "スコア : " + _score + "杯\n";
  281.             
  282.             removeSoba();
  283.             appendSoba();
  284.         }
  285.         
  286.         // マウスポインタの方を向く
  287.         private function turn(m : MovieClip) : void
  288.         {
  289.             var y : Number = stage.mouseY - m.y;
  290.             var x : Number = stage.mouseX - m.x;
  291.             var t : Number = Math.atan(y / x);
  292.             if(x < 0)t += Math.PI;
  293.             t = ((Math.PI / 2 + 2 * Math.PI / 20 * 2.5) + 2 * Math.PI - t) % (2 * Math.PI);
  294.         
  295.             m.wc2.wc3.gotoAndStop(int(t / (Math.PI * 2) * 20));
  296.         }
  297.     }
  298. }
flash swf thumbnail play
出題者からのコメント
きっと誰かがやるんだろうなと思ったらやっちゃいましたね。
ちゃんと素材を有効利用していてゲームとして成立させているところがすばらしい!
Comments from King
I knew someone would do this.
But beauty of this piece is it work as a complete game, with given materials.

Bishopbeinteractive

  1. package
  2. {
  3.     import flash.display.Bitmap;
  4.     import flash.display.BitmapData;
  5.     import flash.display.PixelSnapping;
  6.     import flash.display.Sprite;
  7.     import flash.display.StageAlign;
  8.     import flash.display.StageQuality;
  9.     import flash.display.StageScaleMode;
  10.     import flash.display.Graphics;
  11.     import flash.display.Loader;
  12.     import flash.display.LoaderInfo;
  13.     import flash.events.Event;
  14.     import flash.events.KeyboardEvent;
  15.     import flash.geom.ColorTransform;
  16.     import flash.geom.Point;
  17.     import flash.geom.Matrix;
  18.     import flash.text.TextField;
  19.     import flash.text.TextFieldAutoSize;
  20.     import flash.text.TextFormat;
  21.     import flash.net.URLRequest;
  22.     import flash.ui.Keyboard;
  23.     import com.bit101.components.Label;
  24.     public class UnkoOrNot extends Sprite
  25.     {
  26.         private static var UNKO_URL:String = 'http://swf.wonderfl.net/static/assets/checkmate05/wancoProfessional.swf';
  27.         
  28.         private static const ZERO:Point = new Point(00);
  29.         
  30.         private static const STATE_INPUT:uint = 0;
  31.         private static const STATE_SHOT:uint = 1;
  32.         private static const STATE_GAMEOVER:uint = 2;
  33.         
  34.         public function UnkoOrNot()
  35.         {
  36.             stage.scaleMode = StageScaleMode.NO_SCALE;
  37.             stage.quality = StageQuality.MEDIUM;
  38.             
  39.             var loader:Loader = new Loader();
  40.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
  41.             loader.load(new URLRequest(UNKO_URL));
  42.         }
  43.         
  44.         private var _unkoClass:Class;
  45.         
  46.         private var _ballBackground:Sprite;
  47.         private var _ballLayer:Sprite;
  48.         private var _shotLayer:Sprite;
  49.         private var _particleLayer:Sprite;
  50.         
  51.         private var _scoreField:Label;
  52.         private var _titleField:Label;
  53.         
  54.         private var _shotBall:UnkoBall;
  55.         
  56.         private var _ballsBitmapData:BitmapData;
  57.         private var _shotBitmapData:BitmapData;
  58.         
  59.         private var _ballsBitmapDataMatrix:Matrix;
  60.         
  61.         private var _shotAngle:Number;
  62.         private var _shotAngleCounter:Number;
  63.         
  64.         private var _particles:Array = [];
  65.         
  66.         private var _isSpaceDown:Boolean = false;
  67.         
  68.         private var _nowState:uint;
  69.         
  70.         private var _score:int;
  71.         
  72.         private function loadCompleteHandler(e:Event):void
  73.         {
  74.             var loaderInfo:LoaderInfo = e.target as LoaderInfo;
  75.             loaderInfo.removeEventListener(Event.COMPLETE, loadCompleteHandler);
  76.             
  77.             _unkoClass = loaderInfo.applicationDomain.getDefinition('WakeMotion'as Class;
  78.             
  79.             var sw:Number = stage.stageWidth;
  80.             var sh:Number = stage.stageHeight;
  81.             
  82.             _ballBackground = new Sprite();
  83.             
  84.             _ballBackground.x = sw / 2;
  85.             _ballBackground.y = sh / 2 - 80;
  86.             
  87.             _ballBackground.graphics.clear();
  88.             _ballBackground.graphics.lineStyle(0, 0xcccccc);
  89.             _ballBackground.graphics.drawCircle(00100);
  90.             
  91.             addChild(_ballBackground);
  92.             
  93.             _ballLayer = new Sprite();
  94.             _ballLayer.x = sw / 2;
  95.             _ballLayer.y = sh / 2 - 80;
  96.             
  97.             addChild(_ballLayer);
  98.             
  99.             _shotLayer = new Sprite();
  100.             
  101.             addChild(_shotLayer);
  102.             
  103.             _particleLayer = new Sprite();
  104.             
  105.             addChild(_particleLayer);
  106.             
  107.             _ballsBitmapData = new BitmapData(sw, sh, true, 0x00000000);
  108.             _ballsBitmapData.lock();
  109.             
  110.             _shotBitmapData = new BitmapData(sw, sh, true, 0x00000000);
  111.             _shotBitmapData.lock();
  112.             
  113.             _ballsBitmapDataMatrix = new Matrix();
  114.             
  115.             _scoreField = new Label(this53);
  116.             
  117.             _titleField = new Label(this03'WANCO? OR NOT');
  118.             _titleField.autoSize = true;
  119.             
  120.             new Label(this5, (sh - (21 + 14 * 3)), '[SPACEKEY]: SHOOT');
  121.             new Label(this5, (sh - (21 + 14 * 2)), 'KATAMATTA: +20');
  122.             new Label(this5, (sh - (21 + 14 * 1)), 'KATAMARANAI: -10');
  123.             new Label(this5, (sh - (21 + 14 * 0)), 'HAMIDETA: GAMEOVER');
  124.             
  125.             startGame();
  126.             
  127.             stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  128.             stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
  129.             
  130.             addEventListener(Event.ENTER_FRAME, initialEnterFrameHandler);
  131.         }
  132.         
  133.         private function initialEnterFrameHandler(e:Event):void
  134.         {
  135.             removeEventListener(Event.ENTER_FRAME, initialEnterFrameHandler);
  136.             
  137.             _titleField.x = stage.stageWidth - (_titleField.width + 5);
  138.             
  139.             addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  140.         }
  141.         
  142.         private function startGame():void
  143.         {
  144.             while (_ballLayer.numChildren > 0) {
  145.                 _ballLayer.removeChild(_ballLayer.getChildAt(0));
  146.             }
  147.             
  148.             _ballLayer.addChild(new UnkoBall(40, _unkoClass));
  149.             
  150.             _shotBall = null;
  151.             
  152.             _score = 0;
  153.             
  154.             startInput();
  155.         }
  156.         
  157.         private function startInput():void
  158.         {
  159.             _nowState = STATE_INPUT;
  160.             
  161.             _shotAngleCounter = 0;
  162.             
  163.             _shotBall = new UnkoBall(20, _unkoClass);
  164.             _shotBall.x = stage.stageWidth / 2;
  165.             _shotBall.y = stage.stageHeight - 30;
  166.             
  167.             _shotLayer.addChild(_shotBall);
  168.         }
  169.         
  170.         private function keyDownHandler(e:KeyboardEvent):void
  171.         {
  172.             if (e.keyCode == Keyboard.SPACE) {
  173.                 _isSpaceDown = true;
  174.             }
  175.         }
  176.         
  177.         private function keyUpHandler(e:KeyboardEvent):void
  178.         {
  179.             if (e.keyCode == Keyboard.SPACE) {
  180.                 _isSpaceDown = false;
  181.             }
  182.         }
  183.         
  184.         private function enterFrameHandler(e:Event):void
  185.         {
  186.             updateParticles();
  187.             
  188.             if (_nowState == STATE_GAMEOVER) {
  189.                 
  190.                 _scoreField.text = 'GAMEOVER: ' + _score;
  191.                 
  192.                 if (_isSpaceDown) {
  193.                     _isSpaceDown = false;
  194.                     startGame();
  195.                 }
  196.                 return;
  197.             }
  198.             
  199.             _ballLayer.rotation += 2;
  200.             _ballBackground.rotation = _ballLayer.rotation;
  201.             
  202.             if (_nowState == STATE_INPUT) {
  203.                 
  204.                 var bx:Number = stage.stageWidth / 2;
  205.                 var by:Number = stage.stageHeight;
  206.                 
  207.                 _shotAngle = (150 - Math.sin(_shotAngleCounter) * 120) / 360 * Math.PI;
  208.                 _shotAngleCounter += Math.PI / 60;
  209.                 
  210.                 _shotBall.x = bx + Math.cos(_shotAngle) * 50;
  211.                 _shotBall.y = by - Math.sin(_shotAngle) * 50;
  212.                 
  213.                 _shotLayer.graphics.clear();
  214.                 _shotLayer.graphics.lineStyle(0, 0xcccccc);
  215.                 _shotLayer.graphics.drawCircle(bx, by, 50);
  216.                 _shotLayer.graphics.lineStyle(0, 0x333333);
  217.                 _shotLayer.graphics.moveTo(bx, by);
  218.                 _shotLayer.graphics.lineTo(_shotBall.x, _shotBall.y);
  219.                 
  220.                 if (_isSpaceDown) {
  221.                     _nowState = STATE_SHOT;
  222.                     
  223.                     _shotBall.positionX = _shotBall.x;
  224.                     _shotBall.positionY = _shotBall.y;
  225.                     _shotBall.velocityX = Math.cos(_shotAngle) * 18;
  226.                     _shotBall.velocityY = Math.sin(_shotAngle) * -18;
  227.                 }
  228.             }
  229.             if (_nowState == STATE_SHOT) {
  230.                 
  231.                 moveBall(_shotBall);
  232.                 
  233.                 _ballsBitmapDataMatrix.identity();
  234.                 _ballsBitmapDataMatrix.rotate(_ballLayer.rotation / 360 * Math.PI * 2);
  235.                 _ballsBitmapDataMatrix.translate(_ballLayer.x, _ballLayer.y);
  236.                 
  237.                 _ballsBitmapData.fillRect(_ballsBitmapData.rect, 0x00000000);
  238.                 _ballsBitmapData.draw(_ballLayer, _ballsBitmapDataMatrix);
  239.                 
  240.                 _shotBitmapData.fillRect(_shotBitmapData.rect, 0x00000000);
  241.                 _shotBitmapData.draw(_shotLayer);
  242.                 
  243.                 if (_ballsBitmapData.hitTest(ZERO, 128, _shotBitmapData, ZERO, 128)) {
  244.                     
  245.                     _shotLayer.removeChild(_shotBall);
  246.                     
  247.                     var r:Number = _shotBall.rotation;
  248.                     var p:Point = _ballLayer.globalToLocal(new Point(_shotBall.x, _shotBall.y));
  249.                     _shotBall.x = p.x;
  250.                     _shotBall.y = p.y;
  251.                     _ballLayer.addChild(_shotBall);
  252.                     _shotBall.rotation = r - _ballLayer.rotation;
  253.                     
  254.                     var l:Number = Math.sqrt(p.x * p.x + p.y * p.y);
  255.                     
  256.                     for (var i:uint = 0; i < 4; ++i) {
  257.                         var particle:UnkoBall = new UnkoBall(2 + Math.random() * 3, _shotBall.unkoClass);
  258.                         var ppos:Point = _ballLayer.localToGlobal(new Point(p.x * ((l - 10) / l), p.y * ((l - 10) / l)));
  259.                         particle.positionX = ppos.x;
  260.                         particle.positionY = ppos.y;
  261.                         particle.velocityX = (Math.random() * 16 + 2) - 9;
  262.                         particle.velocityY = Math.random() * -9 - 4;
  263.                         _particleLayer.addChild(particle);
  264.                         _particles.push(particle);
  265.                     }
  266.                     
  267.                     _score += 20;
  268.                     
  269.                     if (l > 90) {
  270.                         _nowState = STATE_GAMEOVER;
  271.                         _isSpaceDown = false;
  272.                     }
  273.                     else {
  274.                         startInput();
  275.                     }
  276.                 }
  277.                 if (_shotBall != null && isOut(_shotBall)) {
  278.                     _shotLayer.removeChild(_shotBall);
  279.                     _shotBall = null;
  280.                     
  281.                     _score -= 10;
  282.                     
  283.                     startInput();
  284.                 }
  285.             }
  286.             
  287.             _scoreField.text = 'SCORE: ' + _score;
  288.         }
  289.         
  290.         private function updateParticles():void
  291.         {
  292.             for (var i:int = 0; i < _particles.length; ++i) {
  293.                 var particle:UnkoBall = _particles[i] as UnkoBall;
  294.                 moveBall(particle);
  295.                 if (isOut(particle)) {
  296.                     _particleLayer.removeChild(particle);
  297.                     _particles.splice(i, 1);
  298.                     --i;
  299.                 }
  300.             }
  301.         }
  302.         
  303.         private function moveBall(ball:UnkoBall):void
  304.         {
  305.             ball.positionX += ball.velocityX;
  306.             ball.positionY += ball.velocityY;
  307.             ball.velocityY += 0.45;
  308.             ball.rotation += 2;
  309.             
  310.             ball.x = ball.positionX;
  311.             ball.y = ball.positionY;
  312.         } 
  313.         
  314.         private function isOut(ball:UnkoBall):Boolean
  315.         {
  316.             return ball.positionX < -30 || ball.positionX > stage.stageWidth + 30 || ball.positionY < -30 || ball.positionY > stage.stageHeight + 30;
  317.         }
  318.     }
  319. }
  320. import flash.display.Sprite;
  321. import flash.display.Graphics;
  322. import flash.display.MovieClip;
  323. import frocessing.color.ColorHSV;
  324. class UnkoBall extends Sprite
  325. {
  326.     public function UnkoBall(size:Number, unkoClass:Class)
  327.     {
  328.         _unkoClass = unkoClass;
  329.         
  330.         var mc:MovieClip = new unkoClass();
  331.         mc.width = size * 2;
  332.         mc.scaleY = mc.scaleX;
  333.         
  334.         mc.y = mc.height / 2;
  335.         
  336.         mc.gotoAndPlay(1);
  337.         
  338.         addChild(mc);
  339.     }
  340.     
  341.     private var _unkoClass:Class;
  342.     
  343.     public var positionX:Number = 0;
  344.     public var positionY:Number = 0;
  345.     public var velocityX:Number = 0;
  346.     public var velocityY:Number = 0;
  347.     
  348.     public function get unkoClass():Class
  349.     {
  350.         return _unkoClass;
  351.     }
  352. }
flash swf thumbnail play
出題者からのコメント
もうすこし素材の動きが欲しかったですが、ゲームとしては一番面白かったです!
Comments from King
Though I want a little more action of materials, it's the best game!

Knightmex_takagi

  1. /**
  2.  * ごく普通のワンコ掃除神経衰弱です。
  3.  */
  4. package 
  5. {
  6.     import flash.display.Bitmap;
  7.     import flash.display.BitmapData;
  8.     import flash.display.Sprite;
  9.     import flash.display.MovieClip;
  10.     import flash.display.Loader;
  11.     import flash.events.Event;
  12.     import flash.events.MouseEvent;
  13.     import flash.filters.BlurFilter;
  14.     import flash.net.URLRequest;
  15.     import flash.system.ApplicationDomain;
  16.     import flash.display.StageAlign;
  17.     import flash.display.StageScaleMode;
  18.     import flash.text.TextField;
  19.     import flash.text.TextFormat;
  20.     import org.libspark.betweenas3.BetweenAS3;
  21.     import org.libspark.betweenas3.tweens.ITween;
  22.     import org.libspark.betweenas3.events.TweenEvent;
  23.     
  24.     [SWF(backgroundColor="#FFFFFF", frameRate="30", width="465", height="465")]
  25.     public class Unko extends Sprite 
  26.     {
  27.         public static var GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoAmateur.swf";
  28.         private var _motionArray:Array = ["StayMotion"
  29.                                           "JumpMotion"
  30.                                           "HighJumpMotion"
  31.                                           "WalkMotion"
  32.                                           "RunMotion"
  33.                                           "SquatMotion"
  34.                                           "QuestionMotion"
  35.                                           "ExclamationMotion"
  36.                                           "HeartMotion"
  37.                                           "PoutMotion"
  38.                                           "StarMotion"
  39.                                           "SingMotion"
  40.                                           "SleepMotion"];
  41.         private var _domain:ApplicationDomain;
  42.         private var _max:uint;
  43.         private var _wankoArray:Array;
  44.         private var _judgeArray:Array;
  45.         private var _triggerArray:Array;
  46.         private var _motionMCArray:Array;
  47.         private var _combo:uint;
  48.         private var _restCount:uint;
  49.         private var _score:uint;
  50.         private var _life:uint;
  51.         private var _scoreField:TextField;
  52.         private var _lifeField:TextField;
  53.         private var _titleField:TextField;
  54.         private var _catchField:TextField;
  55.         private var _blur:BlurFilter;
  56.         /**
  57.          * constructor
  58.          */
  59.         public function Unko()
  60.         {
  61.             super();
  62.             stage.scaleMode = StageScaleMode.NO_SCALE;
  63.             stage.align = StageAlign.TOP_LEFT;
  64.             Wonderfl.capture_delay(5);
  65.             _judgeArray = new Array();
  66.             _wankoArray = new Array();
  67.             _triggerArray = new Array();
  68.             _motionMCArray = new Array();
  69.             _max = 20;
  70.             _restCount = 20;
  71.             _combo = 0;
  72.             _score = 0;
  73.             _life = 5;
  74.             
  75.             _blur = new BlurFilter(20201);
  76.             
  77.             _titleField = createField(createFormat(24), "Let's ワンコ掃除");
  78.             _titleField.x = 40;
  79.             _titleField.y = 30;
  80.             addChild(_titleField);
  81.             
  82.             _catchField = createField(createFormat(14), "神経衰弱の要領でワンコを掃除しろ!!!!!");
  83.             _catchField.x = 40;
  84.             _catchField.y = _titleField.y + _titleField.height + 10;
  85.             addChild(_catchField);
  86.             
  87.             _scoreField = createField(createFormat(11), "SCORE:0");
  88.             _scoreField.x = stage.stageWidth - _scoreField.width - 40;
  89.             _scoreField.y = 30;
  90.             addChild(_scoreField);
  91.             
  92.             _lifeField = createField(createFormat(11), "LIFE:5");
  93.             _lifeField.x = stage.stageWidth - _lifeField.width - 40;
  94.             _lifeField.y = 45;
  95.             addChild(_lifeField);
  96.             
  97.             var loader:Loader = new Loader();
  98.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHanlder);
  99.             loader.load(new URLRequest(GRAPHICS_URL));
  100.         }
  101.         /**
  102.          * ロード完了
  103.          * @param event Event
  104.          */
  105.         private function onCompleteHanlder(event:Event):void 
  106.         {
  107.             event.target.removeEventListener(Event.COMPLETE, onCompleteHanlder);
  108.             _domain = event.target.applicationDomain;
  109.             
  110.             var hNum:int = 5;
  111.             var cnt:int = 0;
  112.             var i:uint = 0;
  113.             for (i = 0; i < _max;i++ )
  114.             {
  115.                 var temp:MovieClip = new ( _domain.getDefinition( _motionArray[0] ) as Class );
  116.                 temp.x = cnt % hNum * 80 + 70;
  117.                 temp.y = Math.floor(cnt / hNum) * 80  + 180;
  118.                 temp.id = String(i);
  119.                 temp.gotoAndStop(1);
  120.                 _triggerArray.push(temp);
  121.                 cnt++;
  122.             }
  123.             generateGame();
  124.         }
  125.         /**
  126.          * ワンコ並べる
  127.          */
  128.         private function generateGame():void 
  129.         {
  130.             var i:uint = 0;
  131.             var rand:uint;
  132.             var motionLen:uint = _motionArray.length;
  133.             
  134.             for (i = 0; i < _max / 2; i++ )
  135.             {
  136.                 rand = Math.floor(Math.random() * motionLen);
  137.                 _wankoArray.push(_motionArray[rand]);
  138.                 _wankoArray.push(_motionArray[rand]);
  139.             }
  140.             //trace(_wankoArray);
  141.             for (i = 0; i < _max;i++ )
  142.             {
  143.                 var trigger:MovieClip = _triggerArray[i];
  144.                 addChild(trigger);
  145.                 rand = Math.floor(Math.random() * _wankoArray.length);
  146.                 var motion:MovieClip = new ( _domain.getDefinition( _wankoArray[rand] ) as Class );
  147.                 motion.type = _wankoArray[rand];
  148.                 motion.x = trigger.x;
  149.                 motion.y = trigger.y;
  150.                 motion.visible = false;
  151.                 addChild(motion);
  152.                 _motionMCArray.push(motion);
  153.                 trigger.targetMotion = motion;
  154.                 _wankoArray.splice(rand, 1);
  155.             }
  156.             addListener();
  157.         }
  158.         /**
  159.          * addListener
  160.          */
  161.         private function addListener():void 
  162.         {
  163.             for (var i:uint = 0; i < _max;i++ )
  164.             {
  165.                 var trigger:MovieClip = _triggerArray[i];
  166.                 trigger.wc2.addEventListener( MouseEvent.CLICK, clickHandler);
  167.                 trigger.buttonMode = trigger.useHandCursor = true;
  168.             }
  169.         }
  170.         /**
  171.          * killListener
  172.          */
  173.         private function killListener():void 
  174.         {
  175.             for (var i:uint = 0; i < _max;i++ )
  176.             {
  177.                 var trigger:MovieClip = _triggerArray[i];
  178.                 trigger.wc2.removeEventListener( MouseEvent.CLICK, clickHandler);
  179.                 trigger.buttonMode = trigger.useHandCursor = false;
  180.             }
  181.         }
  182.         /**
  183.          * クリック時
  184.          * @param event
  185.          */
  186.         public function clickHandler(event:MouseEvent):void 
  187.         {
  188.             var motion:MovieClip = event.currentTarget.parent.targetMotion;
  189.             motion.gotoAndPlay(1);
  190.             motion.wc2.wc3.gotoAndPlay(2);
  191.             event.currentTarget.parent.visible = false;
  192.             motion.visible = true;
  193.             var obj:Object = new Object();
  194.             obj.trigger = event.currentTarget.parent;
  195.             obj.motion = motion;
  196.             //trace(motion.type);
  197.             _judgeArray.push(obj);
  198.             judge();
  199.         }
  200.         /**
  201.          * スコアアップデート
  202.          */
  203.         private function updateScore():void 
  204.         {
  205.             _scoreField.text = "SCORE:" + String(_score);
  206.             _scoreField.x = stage.stageWidth - _scoreField.width - 40;
  207.         }
  208.         /**
  209.          * ライフアップデート
  210.          */
  211.         private function updateLife():void 
  212.         {
  213.             _lifeField.text = "LIFE:" + String(_life);
  214.             _lifeField.x = stage.stageWidth - _lifeField.width - 40;
  215.         }
  216.         /**
  217.          * ゲームオーバー
  218.          */
  219.         private function gameOver():void 
  220.         {
  221.             //trace("Game Over");
  222.             var _gameOver:Sprite = createGameOver();
  223.             addChild(_gameOver);
  224.             _gameOver.buttonMode = true;
  225.             _gameOver.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void
  226.             {
  227.                 _gameOver.buttonMode = false;
  228.                 _gameOver.removeEventListener(MouseEvent.CLICK, arguments.callee);
  229.                 removeChild(_gameOver);
  230.                 regenerate(true);
  231.             });
  232.         }
  233.         /**
  234.          * ゲーム終了時
  235.          */
  236.         private function regenerate(over:Boolean = false):void 
  237.         {
  238.             var i:uint = 0;
  239.             for (i = 0; i < _max;i++ )
  240.             {
  241.                 _triggerArray[i].visible = true;
  242.                 if (contains(_motionMCArray[i])) removeChild(_motionMCArray[i]);
  243.             }
  244.             _restCount = 20;
  245.             _wankoArray = [];
  246.             generateGame();
  247.             if (over)
  248.             {
  249.                 _combo = 0;
  250.                 _score = 0;
  251.                 _life = 5;
  252.                 updateScore();
  253.                 updateLife();
  254.             }
  255.         }
  256.         /**
  257.          * 判定
  258.          */
  259.         private function judge():void 
  260.         {
  261.             if (_judgeArray.length == 2)
  262.             {
  263.                 killListener();
  264.                 var i:uint = 0;
  265.                 if (_judgeArray[0].motion.type == _judgeArray[1].motion.type)
  266.                 {
  267.                     //trace("あたり");
  268.                     _judgeArray[1].motion.wc2.wc3.addEventListener(Event.ENTER_FRAME, function(event:Event):void
  269.                     {
  270.                         _judgeArray[1].motion.wc2.wc3.nextFrame;
  271.                         if (_judgeArray[1].motion.wc2.wc3.currentFrame == _judgeArray[1].motion.wc2.wc3.totalFrames)
  272.                         {
  273.                             _judgeArray[1].motion.wc2.wc3.removeEventListener(Event.ENTER_FRAME, arguments.callee);
  274.                             for (i = 0; i < 2; i++) 
  275.                             {
  276.                                 _judgeArray[i].trigger.visible = true;
  277.                                 _judgeArray[i].motion.visible = false;
  278.                                 _judgeArray[i].trigger.gotoAndStop(1);
  279.                                 _judgeArray[i].trigger.wc2.wc3.gotoAndStop(1);
  280.                                 _judgeArray[i].motion.gotoAndStop(1);
  281.                                 _judgeArray[i].motion.wc2.wc3.gotoAndStop(1);
  282.                                 createPerfume(_judgeArray[i].trigger);
  283.                             }
  284.                             var t:ITween = BetweenAS3.parallel
  285.                                                         (
  286.                                                             BetweenAS3.tween(_judgeArray[0].trigger, { alpha:0 }, null1),
  287.                                                             BetweenAS3.tween(_judgeArray[1].trigger, { alpha:0 }, null1)
  288.                                                         );
  289.                             t.addEventListener(TweenEvent.COMPLETE, function(event:TweenEvent):void
  290.                             {
  291.                                 _judgeArray[0].trigger.visible = false;
  292.                                 _judgeArray[1].trigger.visible = false;
  293.                                 _judgeArray[0].trigger.alpha = 1;
  294.                                 _judgeArray[1].trigger.alpha = 1;
  295.                                 _combo++;
  296.                                 _score += _combo;
  297.                                 _life++;
  298.                                 updateScore();
  299.                                 updateLife();
  300.                                 addListener();
  301.                                 _judgeArray = [];
  302.                                 _restCount -= 2;
  303.                                 if (_restCount == 0)
  304.                                 {
  305.                                     regenerate();
  306.                                 }
  307.                             });
  308.                             t.play();
  309.                         }
  310.                     });
  311.                 }
  312.                 else
  313.                 {
  314.                     //trace("はずれ");
  315.                     _judgeArray[1].motion.wc2.wc3.addEventListener(Event.ENTER_FRAME, function(event:Event):void
  316.                     {
  317.                         _judgeArray[1].motion.wc2.wc3.nextFrame;
  318.                         if (_judgeArray[1].motion.wc2.wc3.currentFrame == _judgeArray[1].motion.wc2.wc3.totalFrames)
  319.                         {
  320.                             _judgeArray[1].motion.wc2.wc3.removeEventListener(Event.ENTER_FRAME, arguments.callee);
  321.                             for (i = 0; i < 2; i++) 
  322.                             {
  323.                                 _judgeArray[i].trigger.visible = true;
  324.                                 _judgeArray[i].motion.visible = false;
  325.                                 _judgeArray[i].trigger.gotoAndStop(1);
  326.                                 _judgeArray[i].trigger.wc2.wc3.gotoAndStop(1);
  327.                                 _judgeArray[i].motion.gotoAndStop(1);
  328.                                 _judgeArray[i].motion.wc2.wc3.gotoAndStop(1);
  329.                             }
  330.                             _combo = 0;
  331.                             _life--;
  332.                             if (_life == 0)
  333.                             {
  334.                                 gameOver();
  335.                                 updateLife();
  336.                                 _judgeArray = [];
  337.                             }
  338.                             else
  339.                             {
  340.                                 updateLife();
  341.                                 addListener();
  342.                                 _judgeArray = [];
  343.                             }
  344.                         }
  345.                     });
  346.                 }
  347.             }
  348.         }
  349.         /**
  350.          * rank
  351.          */
  352.         private function rank():String 
  353.         {
  354.             var str:String = "";
  355.             if (_score <= 10)
  356.             {
  357.                 str = "【 未熟な掃除人 】";
  358.             }
  359.             else if (_score > 10 && _score <= 30)
  360.             {
  361.                 str = "【 普通の掃除人 】";
  362.             }
  363.             else if (_score > 30 && _score <= 50)
  364.             {
  365.                 str = "【 いけてる掃除人 】";
  366.             }
  367.             else if (_score > 50 && _score <= 80)
  368.             {
  369.                 str = "【 最高の掃除人 】";
  370.             }
  371.             else if (_score > 80)
  372.             {
  373.                 str = "【 伝説の掃除人 】";
  374.             }
  375.             return str;
  376.         }
  377.         /**
  378.          * createGameOver
  379.          */
  380.         private function createGameOver():Sprite 
  381.         {
  382.             var sprite:Sprite = new Sprite();
  383.             sprite.graphics.beginFill(0x000000, 0.8);
  384.             sprite.graphics.drawRect(00, stage.stageWidth, stage.stageHeight);
  385.             sprite.graphics.endFill();
  386.             
  387.             var format:TextFormat = new TextFormat();
  388.             format.color = 0xFFFFFF;
  389.             format.align = "center";
  390.             var field:TextField = createField(format, "GAME OVER\n\nあなたのランクは\n" + rank() + "\n\n\nCLICK TO RETRY");
  391.             field.mouseEnabled = false;
  392.             field.x = (stage.stageWidth - field.width) / 2;
  393.             field.y = (stage.stageHeight - field.height) / 2;
  394.             sprite.addChild(field);
  395.             
  396.             return sprite;
  397.         }
  398.         /**
  399.          * createField
  400.          * @param format
  401.          * @param str
  402.          * @return textField
  403.          */
  404.         private function createField(format:TextFormat, str:String):TextField 
  405.         {
  406.             var field:TextField = new TextField();
  407.             field.defaultTextFormat = format;
  408.             field.autoSize = "left";
  409.             field.selectable = false;
  410.             field.text = str;
  411.             return field;
  412.         }
  413.         /**
  414.          * createFormat
  415.          * @param size
  416.          */
  417.         private function createFormat(size:uint):TextFormat 
  418.         {
  419.             var format:TextFormat = new TextFormat();
  420.             format.size = size;
  421.             format.font = "_ゴシック";
  422.             format.bold = true;
  423.             
  424.             return format;
  425.         }
  426.         /**
  427.          * おいにー
  428.          */
  429.         private function createPerfume(target:MovieClip):void 
  430.         {
  431.             var sprite:Sprite = new Sprite();
  432.             sprite.graphics.beginFill(0x996600, 1);
  433.             sprite.graphics.drawCircle(0025);
  434.             sprite.graphics.endFill();
  435.             sprite.x = target.x;
  436.             sprite.y = target.y - 30;
  437.             sprite.filters = [_blur];
  438.             addChild(sprite);
  439.             var t:ITween = BetweenAS3.tween(sprite, { y:target.y - 70, alpha:0 }, null1 );
  440.             t.addEventListener(TweenEvent.COMPLETE, function():void
  441.             {
  442.                 t.removeEventListener(TweenEvent.COMPLETE, arguments.callee);
  443.                 removeChild(sprite);
  444.             });
  445.             t.play();
  446.         }
  447.     }
  448. }
flash swf thumbnail play
出題者からのコメント
神経衰弱と聞くとカードを思いつきますが、そういえば動きでもできるんだなと、ハッとしました。
Comments from King
"Pelmanism" reminded me playing cards, but I realized we can implement it by motion.

ad