Yugo Nakamura

アマチュア部門の「パンツめくり」と、プロ部門の「鼓動」が好きでした。
技術的にはプロ/アマ逆かと思いますが、エロ的には、アマ/プロ、正しい選択ですね。
まあ、全体的には、DMMには遠く及ばなかったと思います。
この道は果てしないですね。
ご参加いただいた皆さま、ありがとうございました。

I like the "flipping skirt up" from Amateur Category and "Philosopher's Heart Beat" from Professional Category the best.
While one from Amateur category seems to have more ability, the other one from Professional category express "sexuality" better.
As a whole, those works were far behind from DMM, Japanese movie site full of sexual content.
We all have long way to go, to see how deep is the creativity. It seems endless to me.
Thank you for your participation.

Amateur

  1. Queen
    sekiryou
  2. Bishop
    該当者なし Not corresponding
  3. Knight
    該当者なし Not corresponding

View All Other  Challengers

Professional

  1. Queen
    usagifrask
  2. Bishop
    該当者なし Not corresponding
  3. Knight
    該当者なし Not corresponding

View All Other Challengers

Amateur

Queensekiryou

  1. // forked from checkmate's Checkmate Vol.6 Amatuer
  2. package {
  3.     import flash.display.*;
  4.     import flash.events.*;
  5.     import flash.geom.*;
  6.     import flash.text.*;
  7.     
  8.     [SWF(width = "465", height = "465", backgroundColor = "0x000000", frameRate = "30")]
  9.     
  10.     public class FeelTheWind extends Sprite {
  11.         private const STAGE_WIDTH:uint = 465;
  12.         private const STAGE_HEIGHT:uint = 465;
  13.         private const STAGE_CENTER_X:Number = STAGE_WIDTH * 0.5;
  14.         private const STAGE_CENTER_Y:Number = STAGE_HEIGHT * 0.5;
  15.         private var canvas:BitmapData;
  16.         private var screen:Sprite;
  17.         private var mtx3D:Matrix3D = new Matrix3D();
  18.         private var projection:PerspectiveProjection;
  19.         private var projectionMatrix3D:Matrix3D;
  20.         private var skirt:Skirt = new Skirt();
  21.         
  22.         public function FeelTheWind() {
  23.             stage.scaleMode = StageScaleMode.NO_SCALE;
  24.             stage.align = StageAlign.TOP_LEFT;
  25.             addChild( new Bitmap( canvas = new BitmapData( STAGE_WIDTH, STAGE_HEIGHT, true, 0xFF000000 ) ) );
  26.             addChild( screen = new Sprite() );
  27.             screen.alpha = 0;
  28.             screen.x = STAGE_CENTER_X;
  29.             screen.y = STAGE_CENTER_Y;
  30.             projection = new PerspectiveProjection();
  31.             projection.fieldOfView = 30;
  32.             projectionMatrix3D = projection.toMatrix3D();
  33.             addEventListener( Event.ENTER_FRAME, onEnterFrameHandler );
  34.             addEventListener( Event.ENTER_FRAME,
  35.                 function( eventObject:Event ):void {
  36.                     if ( screen.alpha < 1 ) {
  37.                         screen.alpha += 0.04;
  38.                     } else {
  39.                         removeEventListener( Event.ENTER_FRAME, arguments.callee );
  40.                         start();
  41.                     }
  42.                 }
  43.             );
  44.             
  45.             tf = new TextFormat();
  46.             tf.font = "Verdana";
  47.             tf.size = 12;
  48.             scoreBoardDesign();
  49.             gaugeDesign();
  50.         }
  51.         private var tf:TextFormat;
  52.         private var score1st:TextField;
  53.         private var score2nd:TextField;
  54.         private var score3rd:TextField;
  55.         private var scoreTotal:TextField;
  56.         private var retryButton:Sprite;
  57.         private var cullingButton:Sprite;
  58.         private var windDirection:Sprite;
  59.         private var windDirectionGauge:Sprite;
  60.         private var windForceGauge:Sprite;
  61.         private var forceGauge:Sprite;
  62.         private var clickDirection:Sprite;
  63.         private var clickForce:Sprite;
  64.         private var resultBoard:Sprite;
  65.         private var resultScore:TextField;
  66.         private var resultGrade:TextField;
  67.         private function scoreBoardDesign():void {
  68.             var captionScore:TextField = new TextField();
  69.             captionScore.autoSize = TextFieldAutoSize.LEFT;
  70.             captionScore.x = 10;
  71.             captionScore.y = 10;
  72.             captionScore.selectable = false;
  73.             captionScore.textColor = 0xFFFFFF;
  74.             captionScore.defaultTextFormat = tf;
  75.             captionScore.text = "SCORE";
  76.             addChild( captionScore );
  77.             
  78.             cullingButton = new Sprite();
  79.             //cullingButton.graphics.lineStyle( 1, 0x999900 )
  80.             cullingButton.graphics.beginFill( 0x000000, 0 );            
  81.             cullingButton.graphics.drawRect( -32, -126424 );
  82.             cullingButton.graphics.endFill();
  83.             cullingButton.x = 32;
  84.             cullingButton.y = 18;
  85.             addChild( cullingButton );
  86.             cullingButton.buttonMode = true;
  87.             cullingButton.mouseChildren = false;
  88.             cullingButton.addEventListener( MouseEvent.MOUSE_DOWN,
  89.                 function( eventObject:MouseEvent ):void {
  90.                     cullingFlag = !cullingFlag
  91.                 }
  92.             );
  93.             
  94.             var cap1st:TextField = new TextField();
  95.             cap1st.autoSize = TextFieldAutoSize.LEFT;
  96.             cap1st.x = 20;
  97.             cap1st.y = 30;
  98.             cap1st.selectable = false;
  99.             cap1st.textColor = 0xFFFFFF;
  100.             cap1st.defaultTextFormat = tf;
  101.             cap1st.text = "1st";
  102.             addChild( cap1st );
  103.             
  104.             var cap2nd:TextField = new TextField();
  105.             cap2nd.autoSize = TextFieldAutoSize.LEFT;
  106.             cap2nd.x = 20;
  107.             cap2nd.y = 50;
  108.             cap2nd.selectable = false;
  109.             cap2nd.textColor = 0xFFFFFF;
  110.             cap2nd.defaultTextFormat = tf;
  111.             cap2nd.text = "2nd";
  112.             addChild( cap2nd );
  113.             
  114.             var cap3rd:TextField = new TextField();
  115.             cap3rd.autoSize = TextFieldAutoSize.LEFT;
  116.             cap3rd.x = 20;
  117.             cap3rd.y = 70;
  118.             cap3rd.selectable = false;
  119.             cap3rd.textColor = 0xFFFFFF;
  120.             cap3rd.defaultTextFormat = tf;
  121.             cap3rd.text = "3rd";
  122.             addChild( cap3rd );
  123.             
  124.             var capTotal:TextField = new TextField();
  125.             capTotal.autoSize = TextFieldAutoSize.LEFT;
  126.             capTotal.x = 20;
  127.             capTotal.y = 90;
  128.             capTotal.selectable = false;
  129.             capTotal.textColor = 0xFFFFFF;
  130.             capTotal.defaultTextFormat = tf;
  131.             capTotal.text = "TOTAL";
  132.             addChild( capTotal );
  133.             
  134.             
  135.             score1st = new TextField();
  136.             score1st.autoSize = TextFieldAutoSize.RIGHT;
  137.             score1st.x = 120;
  138.             score1st.y = 30;
  139.             score1st.selectable = false;
  140.             score1st.textColor = 0xFFFFFF;
  141.             score1st.defaultTextFormat = tf;
  142.             score1st.text = "0";
  143.             addChild( score1st );
  144.             
  145.             score2nd = new TextField();
  146.             score2nd.autoSize = TextFieldAutoSize.RIGHT;
  147.             score2nd.x = 120;
  148.             score2nd.y = 50;
  149.             score2nd.selectable = false;
  150.             score2nd.textColor = 0xFFFFFF;
  151.             score2nd.defaultTextFormat = tf;
  152.             score2nd.text = "0";
  153.             addChild( score2nd );
  154.             
  155.             score3rd = new TextField();
  156.             score3rd.autoSize = TextFieldAutoSize.RIGHT;
  157.             score3rd.x = 120;
  158.             score3rd.y = 70;
  159.             score3rd.selectable = false;
  160.             score3rd.textColor = 0xFFFFFF;
  161.             score3rd.defaultTextFormat = tf;
  162.             score3rd.text = "0";
  163.             addChild( score3rd );
  164.             
  165.             scoreTotal = new TextField();
  166.             scoreTotal.autoSize = TextFieldAutoSize.RIGHT;
  167.             scoreTotal.x = 120;
  168.             scoreTotal.y = 90;
  169.             scoreTotal.selectable = false;
  170.             scoreTotal.textColor = 0xFFFFFF;
  171.             scoreTotal.defaultTextFormat = tf;
  172.             scoreTotal.text = "0";
  173.             addChild( scoreTotal );
  174.             
  175.             var capResult:TextField = new TextField();
  176.             capResult.autoSize = TextFieldAutoSize.CENTER;
  177.             capResult.x = 0;
  178.             capResult.y = -45;
  179.             capResult.selectable = false;
  180.             capResult.textColor = 0xFFFF00;
  181.             capResult.defaultTextFormat = tf;
  182.             capResult.text = "RESULT";
  183.             
  184.             resultScore = new TextField();
  185.             resultScore.autoSize = TextFieldAutoSize.CENTER;
  186.             resultScore.x = 0;
  187.             resultScore.y = -15;
  188.             resultScore.selectable = false;
  189.             resultScore.textColor = 0xFFFFFF;
  190.             resultScore.defaultTextFormat = tf;
  191.             resultScore.text = "SCORE";
  192.             
  193.             resultGrade = new TextField();
  194.             resultGrade.autoSize = TextFieldAutoSize.CENTER;
  195.             resultGrade.x = 0;
  196.             resultGrade.y = 15;
  197.             resultGrade.selectable = false;
  198.             resultGrade.textColor = 0xFFFFFF;
  199.             resultGrade.defaultTextFormat = tf;
  200.             resultGrade.text = "GRADE";
  201.             
  202.             resultBoard = new Sprite();
  203.             resultBoard.graphics.lineStyle( 1, 0x999900 )
  204.             resultBoard.graphics.beginFill( 0x000000, 0.5 );            
  205.             resultBoard.graphics.drawRect( -80, -50160100 );
  206.             resultBoard.graphics.endFill();
  207.             resultBoard.x = STAGE_CENTER_X;
  208.             resultBoard.y = STAGE_CENTER_Y;
  209.             addChild( resultBoard );
  210.             resultBoard.addChild( capResult );
  211.             resultBoard.addChild( resultScore );
  212.             resultBoard.addChild( resultGrade );
  213.             resultBoard.visible = false;
  214.             
  215.             var retry:TextField = new TextField();
  216.             retry.autoSize = TextFieldAutoSize.CENTER;
  217.             retry.x = 0;
  218.             retry.y = -9;
  219.             retry.selectable = false;
  220.             retry.textColor = 0xFFFFFF;
  221.             retry.defaultTextFormat = tf;
  222.             retry.text = "RETRY";
  223.             
  224.             retryButton = new Sprite();
  225.             retryButton.graphics.lineStyle( 1, 0x999900 )
  226.             retryButton.graphics.beginFill( 0x000000, 0 );            
  227.             retryButton.graphics.drawRect( -32, -126424 );
  228.             retryButton.graphics.endFill();
  229.             retryButton.x = 420;
  230.             retryButton.y = 30;
  231.             addChild( retryButton );
  232.             retryButton.addChild( retry );
  233.             retryButton.visible = false;
  234.             retryButton.buttonMode = true;
  235.             retryButton.mouseChildren = false;
  236.             retryButton.addEventListener( MouseEvent.MOUSE_DOWN, start );
  237.         }
  238.         private function gaugeDesign():void {
  239.             var north:TextField = new TextField();
  240.             north.autoSize = TextFieldAutoSize.CENTER;
  241.             north.x = 158;
  242.             north.y = 320;
  243.             north.selectable = false;
  244.             north.textColor = 0xFFFFFF;
  245.             north.defaultTextFormat = tf;
  246.             north.text = "N";
  247.             addChild( north );
  248.             
  249.             addChild( windDirection = new Sprite() );
  250.             windDirection.graphics.beginGradientFill( GradientType.LINEAR, [0x0000FF, 0xFFFFFF], [11], [0x00, 0xFF] );
  251.             windDirection.graphics.lineStyle( 1.0, 0xFFFFFF );
  252.             windDirection.graphics.moveTo( 00 );
  253.             windDirection.graphics.lineTo( 1035 );
  254.             windDirection.graphics.lineTo( 030 );
  255.             windDirection.graphics.lineTo( -1035 );
  256.             windDirection.graphics.lineTo( 00 );
  257.             windDirection.x = 160;
  258.             windDirection.y = 380;
  259.             
  260.             addChild( windDirectionGauge = new Sprite() );
  261.             windDirectionGauge.graphics.lineStyle( 1.0, 0xFFFFFF );
  262.             windDirectionGauge.graphics.drawCircle( 0010 );
  263.             windDirectionGauge.graphics.drawCircle( 0030 );
  264.             windDirectionGauge.graphics.moveTo( -400 );
  265.             windDirectionGauge.graphics.lineTo( 400 );
  266.             windDirectionGauge.graphics.moveTo( 0, -40 );
  267.             windDirectionGauge.graphics.lineTo( 040 );
  268.             windDirectionGauge.x = 160;
  269.             windDirectionGauge.y = 380;
  270.             
  271.             var forceBaseGauge:Sprite = new Sprite();
  272.             forceBaseGauge.graphics.lineStyle( 1.0, 0xFFFFFF );
  273.             forceBaseGauge.graphics.beginFill( 0xFF0000 );
  274.             forceBaseGauge.graphics.drawRect( 001005 );
  275.             forceBaseGauge.graphics.endFill();            
  276.             forceBaseGauge.x = 260;
  277.             forceBaseGauge.y = 380;
  278.             addChild( forceBaseGauge );
  279.             
  280.             addChild( forceGauge = new Sprite() );
  281.             forceGauge.graphics.lineStyle( 1.0, 0xFFFFFF );
  282.             forceGauge.graphics.beginFill( 0xFFFF00 );
  283.             forceGauge.graphics.drawRect( 001005 );
  284.             forceGauge.graphics.endFill();            
  285.             forceGauge.x = 260;
  286.             forceGauge.y = 380;
  287.             
  288.             var capDirection:TextField = new TextField();
  289.             capDirection.autoSize = TextFieldAutoSize.CENTER;
  290.             capDirection.x = 160;
  291.             capDirection.y = 430;
  292.             capDirection.selectable = false;
  293.             capDirection.textColor = 0xFFFFFF;
  294.             capDirection.defaultTextFormat = tf;
  295.             capDirection.text = "Direction";
  296.             addChild( capDirection );
  297.             
  298.             var capForce:TextField = new TextField();
  299.             capForce.autoSize = TextFieldAutoSize.CENTER;
  300.             capForce.x = 310;
  301.             capForce.y = 430;
  302.             capForce.selectable = false;
  303.             capForce.textColor = 0xFFFFFF;
  304.             capForce.defaultTextFormat = tf;
  305.             capForce.text = "Force";
  306.             addChild( capForce );
  307.             
  308.             var capDirectClick:TextField = new TextField();
  309.             capDirectClick.autoSize = TextFieldAutoSize.CENTER;
  310.             capDirectClick.x = 0;
  311.             capDirectClick.y = -90;
  312.             capDirectClick.selectable = false;
  313.             capDirectClick.textColor = 0xFFFF00;
  314.             capDirectClick.defaultTextFormat = tf;
  315.             capDirectClick.text = "CLICK";
  316.             
  317.             clickDirection = new Sprite();
  318.             clickDirection.graphics.lineStyle( 1, 0x999900 )
  319.             clickDirection.graphics.beginFill( 0x000000, 0 );            
  320.             clickDirection.graphics.drawRect( -65, -70130140 );
  321.             clickDirection.graphics.endFill();
  322.             clickDirection.x = 160;
  323.             clickDirection.y = 385;
  324.             addChild( clickDirection );
  325.             clickDirection.addChild( capDirectClick );
  326.             clickDirection.visible = false;
  327.             clickDirection.buttonMode = true;
  328.             clickDirection.mouseChildren = false;
  329.             clickDirection.addEventListener( MouseEvent.MOUSE_DOWN,
  330.                 function( eventObject:MouseEvent ):void {
  331.                     decisionDirection = true;
  332.                 }
  333.             );
  334.             
  335.             var capForceClick:TextField = new TextField();
  336.             capForceClick.autoSize = TextFieldAutoSize.CENTER;
  337.             capForceClick.x = 0;
  338.             capForceClick.y = -90;
  339.             capForceClick.selectable = false;
  340.             capForceClick.textColor = 0xFFFF00;
  341.             capForceClick.defaultTextFormat = tf;
  342.             capForceClick.text = "CLICK";
  343.             
  344.             clickForce = new Sprite();
  345.             clickForce.graphics.lineStyle( 1, 0x999900 );
  346.             clickForce.graphics.beginFill( 0x000000, 0 );            
  347.             clickForce.graphics.drawRect( -65, -70130140 );
  348.             clickForce.graphics.endFill();
  349.             clickForce.x = 310;
  350.             clickForce.y = 385;
  351.             addChild( clickForce );
  352.             clickForce.addChild( capForceClick );
  353.             clickForce.visible = false;
  354.             clickForce.buttonMode = true;
  355.             clickForce.mouseChildren = false;
  356.             clickForce.addEventListener( MouseEvent.MOUSE_DOWN,
  357.                 function( eventObject:MouseEvent ):void {
  358.                     decisionForce = true;
  359.                 }
  360.             );
  361.         }
  362.         private var trying:uint;
  363.         private var score:Array;
  364.         private var decisionForce:Boolean;
  365.         private var decisionDirection:Boolean;
  366.         private var windFlag:Boolean;
  367.         private var windDuration:int;
  368.         private var windPower:Number;
  369.         private var windPowerX:Number;
  370.         private var windPowerY:Number;
  371.         private var windPowerZ:Number;
  372.         private var windDecrease:Number;
  373.         private const DEGREE_TO_RADIAN:Number = Math.PI / 180;
  374.         private function gameControl( eventObject:Event ):void {
  375.             var windTrans:Function = function():void {
  376.                 var tmpDirect:Number = ( windDirection.rotation + 90 ) * DEGREE_TO_RADIAN;
  377.                 windPowerX = Math.cos( tmpDirect ) * -windPower;
  378.                 windPowerY = -windPower;
  379.                 windPowerZ = Math.sin( tmpDirect ) * windPower;
  380.             }
  381.             if ( windFlag ) {
  382.                 if ( windDuration >= 0 ) {
  383.                     windDuration -= 1;
  384.                 } else {
  385.                     if ( windPower > 0 ) {
  386.                         windTrans();
  387.                         windPower -= windDecrease;
  388.                     } else {
  389.                         windFlag = false;
  390.                         windPowerX = 0;
  391.                         windPowerY = 0;
  392.                         windPowerZ = 0;
  393.                         if ( trying < 3 ) {
  394.                             clickDirection.visible = true;
  395.                             clickForce.visible = true;
  396.                         }
  397.                     }
  398.                 }
  399.             } else {
  400.                 if ( trying > 2 ) {
  401.                     removeEventListener( Event.ENTER_FRAME, gameControl );
  402.                     result();
  403.                 } else {
  404.                     if ( !decisionDirection ) {
  405.                         windDirection.rotation += 20;
  406.                     } else {
  407.                         clickDirection.visible = false;
  408.                     }
  409.                     if ( !decisionForce ) {
  410.                         forceGauge.scaleX += 0.08;
  411.                         if ( forceGauge.scaleX > 1.0 ) {
  412.                             forceGauge.scaleX = 0.04;
  413.                         }
  414.                     } else {
  415.                         clickForce.visible = false;
  416.                     }
  417.                     if ( decisionDirection && decisionForce ) {
  418.                         windPower = forceGauge.scaleX * 1.6 * 0.3;
  419.                         windTrans();
  420.                         score[ trying ] = int( ( ( 200 - Math.abs( windDirection.rotation ) ) * 0.1 ) * ( forceGauge.scaleX * 10 ) );
  421.                         scoreUpdate();
  422.                         windDecrease = windPower / 75;
  423.                         windDuration = 50;
  424.                         windFlag = true;
  425.                         decisionDirection = false;
  426.                         decisionForce = false;
  427.                         trying += 1;
  428.                     }
  429.                 }
  430.             }
  431.         }
  432.         private function start( eventObject:MouseEvent = null ):void {
  433.             resultBoard.visible = false;
  434.             retryButton.visible = false;
  435.             trying = 0;
  436.             score = [ 000 ];
  437.             scoreUpdate();
  438.             decisionForce = false;
  439.             decisionDirection = false;
  440.             windFlag = false;
  441.             windPowerX = 0;
  442.             windPowerY = 0;
  443.             windPowerZ = 0;
  444.             clickDirection.visible = true;
  445.             clickForce.visible = true;
  446.             addEventListener( Event.ENTER_FRAME, gameControl );
  447.         }
  448.         private function scoreUpdate():void {
  449.             score1st.text = score[ 0 ];
  450.             score2nd.text = score[ 1 ];
  451.             score3rd.text = score[ 2 ];
  452.             scoreTotal.text = score[ 0 ] + score[ 1 ] + score[ 2 ];
  453.         }
  454.         private function result():void {
  455.             var tmpScore:Number = score[ 0 ] + score[ 1 ] + score[ 2 ];
  456.             resultScore.text = "SCORE : " + tmpScore;
  457.             if ( tmpScore > 520 ) {
  458.                 resultGrade.text = "GRADE : EXCELLENT";
  459.             } else if ( tmpScore > 420 ) {
  460.                 resultGrade.text = "GRADE : GREAT";
  461.             } else if ( tmpScore > 300 ) {
  462.                 resultGrade.text = "GRADE : GOOD";
  463.             } else if ( tmpScore > 150 ) {
  464.                 resultGrade.text = "GRADE : BAD";
  465.             } else {
  466.                 resultGrade.text = "GRADE : POOR";
  467.             }
  468.             resultBoard.visible = true;
  469.             retryButton.visible = true;
  470.         }
  471.         private var viewMoveX:Number = 0;
  472.         private var viewMoveY:Number = 0;
  473.         private var cullingFlag:Boolean = true;
  474.         private function onEnterFrameHandler( eventObject:Event ):void {
  475.             var projectedVerts:Vector.<Number> = new Vector.<Number>();
  476.             var uvts:Vector.<Number> = new Vector.<Number>();
  477.             var offsetZ:Number = 600;
  478.             
  479.             var cameraWorkX:Number = Math.sin( viewMoveX ) * 8;
  480.             viewMoveX += 0.01;
  481.             var cameraWorkY:Number = Math.sin( viewMoveY ) * 8 + 20;
  482.             viewMoveY += 0.02;
  483.             
  484.             skirt.flutter( windPowerX, windPowerY, windPowerZ );
  485.             
  486.             mtx3D.identity();
  487.             mtx3D.appendRotation( cameraWorkX, Vector3D.Y_AXIS);
  488.             mtx3D.appendRotation( cameraWorkY, Vector3D.X_AXIS);
  489.             mtx3D.appendTranslation( 00, offsetZ );
  490.             mtx3D.append( projectionMatrix3D );
  491.             bugfix( mtx3D );
  492.             
  493.             Utils3D.projectVectors( mtx3D, skirt.vertices3D, projectedVerts, uvts );
  494.             
  495.             screen.graphics.clear();
  496.             screen.graphics.lineStyle( 0, 0xFF0000 );
  497.             //screen.graphics.beginFill( 0x993333 );
  498.             if ( cullingFlag ) {
  499.                 screen.graphics.drawTriangles( projectedVerts, skirt.indices, null );
  500.             } else {
  501.                 screen.graphics.drawTriangles( projectedVerts, skirt.indices, null, TriangleCulling.NEGATIVE );
  502.             }
  503.             //screen.graphics.endFill();
  504.         }
  505.         private function bugfix( matrix:Matrix3D ):void {
  506.             var m1:Matrix3D = new Matrix3D(Vector.<Number>( [ 00000000,  00000010 ] ) );
  507.             var m2:Matrix3D = new Matrix3D(Vector.<Number>( [ 00000000,  00010000 ] ) );
  508.             m1.append( m2 );
  509.             if ( m1.rawData[15] == 20 ) {
  510.                 var rawData:Vector.<Number> = matrix.rawData;
  511.                 rawData[15] /= 20;
  512.                 matrix.rawData = rawData;
  513.             }
  514.         }
  515.     }
  516. }
  517. class Skirt {
  518.     public var flutter:Function;
  519.     public var vertices3D:Vector.<Number>;
  520.     public var indices:Vector.<int>;
  521.     private var node:Array;
  522.     public function Skirt() {
  523.         var friction:Number = 0.8;
  524.         var spring:Number = 0.04;
  525.         var gravity:Number = 0.7;
  526.         var rows:uint = 36;
  527.         var cols:uint = 14;
  528.         node = new Array( rows ).map(
  529.             function():Array {
  530.                 return new Array( cols ).map(
  531.                     function():Object {
  532.                         return {
  533.                             px:0, py:0, pz:0,
  534.                             vx:0, vy:0, vz:0,
  535.                             mx:0, my:0, mz:0,
  536.                             fix:0
  537.                         };
  538.                     }
  539.                 );
  540.             }
  541.         );
  542.         for ( var i:uint = 0; i < rows; i++ ) {
  543.             for ( var j:uint = 0; j < cols; j++ ) {
  544.                 var radius:Number = 30 + ( j - 2 ) * 0.5;
  545.                 node[ i ][ j ].px = node[ i ][ j ].fx = Math.cos( i / rows * 6.24 ) * radius;
  546.                 node[ i ][ j ].py = node[ i ][ j ].fy = j * 1.75 - 50;
  547.                 node[ i ][ j ].pz = node[ i ][ j ].fz = Math.sin( i / rows * 6.24 ) * radius;
  548.                 
  549.                 if ( j < 2 ) {
  550.                     node[ i ][ j ].fix = 1;
  551.                     node[ i ][ j ].py = node[ i ][ j ].fy = j * 6 - 50;
  552.                 }
  553.             }
  554.         }
  555.         indices = new Vector.<int>();
  556.         for ( j = 0; j < cols - 1; j++ ) {
  557.             for ( i = 0; i < rows; i++ ) {
  558.                 if( i != rows - 1 ) {
  559.                     indices.push( i + rows * j , i + rows * j + 1, i + rows * ( j + 1 ) );
  560.                     indices.push( i + 1 + ( rows * j ), i  + 1 + ( rows * ( j + 1 ) ),  i + ( rows * ( j + 1 ) ) );
  561.                 } else {
  562.                     indices.push( i + rows * j , rows * j, i + rows * ( j + 1 ) );
  563.                     indices.push( rows * j, rows * ( j + 1 ),  i + ( rows * ( j + 1 ) ) );
  564.                 }
  565.             }
  566.         }
  567.         flutter = function( windPowerX:Number, windPowerY:Number, windPowerZ:Number ):void {
  568.             vertices3D = new Vector.<Number>();
  569.             for ( j = 0; j < cols; j++ ) {
  570.                 for ( i = 0; i < rows; i++ ) {
  571.                     node[ i ][ j ].mx = 0;
  572.                     node[ i ][ j ].my = 0;
  573.                     node[ i ][ j ].mz = 0;
  574.                     
  575.                     var bx:Number = node[ i ][ j ].px;
  576.                     var by:Number = node[ i ][ j ].py;
  577.                     var bz:Number = node[ i ][ j ].pz;
  578.                     if ( node[ i ][ j ].fix == 0 ) {
  579.                         node[ i ][ j ].px += node[ i ][ j - 1 ].mx;
  580.                         node[ i ][ j ].py += node[ i ][ j - 1 ].my;
  581.                         node[ i ][ j ].pz += node[ i ][ j - 1 ].mz;
  582.                         
  583.                         var vpx:Number = node[ i ][ j ].px + windPowerX + ( Math.random() * 0.4 - 0.2 );
  584.                         var vpy:Number = node[ i ][ j ].py + windPowerY + ( Math.random() * 0.4 - 0.2 );
  585.                         var vpz:Number = node[ i ][ j ].pz + windPowerZ + ( Math.random() * 0.4 - 0.2 );
  586.                         if ( vpx * vpx + vpz * vpz < 1600 ) {
  587.                             node[ i ][ j ].px = vpx;
  588.                             node[ i ][ j ].py = vpy;
  589.                             node[ i ][ j ].pz = vpz;
  590.                         }
  591.                         node[ i ][ j ].vx += ( node[ i ][ j - 1 ].px - node[ i ][ j ].px ) * spring;
  592.                         node[ i ][ j ].vy += ( node[ i ][ j - 1 ].py - node[ i ][ j ].py ) * spring;
  593.                         node[ i ][ j ].vz += ( node[ i ][ j - 1 ].pz - node[ i ][ j ].pz ) * spring;
  594.                         
  595.                         node[ i ][ j ].vx *= friction;
  596.                         node[ i ][ j ].vy *= friction;
  597.                         node[ i ][ j ].vz *= friction;
  598.                         
  599.                         node[ i ][ j ].px += node[ i ][ j ].vx;
  600.                         node[ i ][ j ].py += node[ i ][ j ].vy;
  601.                         node[ i ][ j ].pz += node[ i ][ j ].vz;
  602.                         
  603.                         var radius:Number = 0.5;
  604.                         node[ i ][ j ].px += Math.cos( i / rows * 6.24 ) * radius;
  605.                         node[ i ][ j ].py -= 0.08;
  606.                         node[ i ][ j ].pz += Math.sin( i / rows * 6.24 ) * radius;
  607.                         
  608.                         node[ i ][ j ].py += gravity;
  609.                     }
  610.                     node[ i ][ j ].mx = node[ i ][ j ].px - bx;
  611.                     node[ i ][ j ].my = node[ i ][ j ].py - by;
  612.                     node[ i ][ j ].mz = node[ i ][ j ].pz - bz;
  613.                     
  614.                     vertices3D.push( node[ i ][ j ].px, node[ i ][ j ].py, node[ i ][ j ].pz );
  615.                 }
  616.             }
  617.         }
  618.     }
  619. }
flash swf thumbnail play

Professional

Queenusagifrask

  1. // forked from checkmate's Checkmate Vol.6 Professional
  2. package  
  3. {
  4.     /*
  5. 左の黒いエリアで激しくクリック、または激しくカーソル移動すると、
  6. あなたの鼓動は徐々に早まり、あなたはエモーショナルを止めることができないでしょう。
  7. あなたは知っていることでしょう、この鼓動の激しさを…
  8. Click and move your cursor like crazy over the black area on the left side of the screen. Your heartbeat will gradually become more and more intense. 
  9. You can't stop yourself can you? You know it, the intensity of the pulse. 
  10.     */
  11.     import flash.display.*;
  12.     import flash.events.*;
  13.     import flash.geom.Point;
  14.     import flash.filters.BlurFilter;
  15.     import flash.media.Sound;
  16.     import flash.net.URLRequest;
  17.     import flash.utils.Timer;
  18.     
  19.     
  20.      [SWF(width = "600", height = "300", backgroundColor = "0xFFFFFF", frameRate = "30")]
  21.     
  22.     public class checkmateProfessional extends Sprite
  23.     {
  24.         private var container:Shape = new Shape();
  25.         private var maskShape:Shape = new Shape();
  26.         private var leftPad:Sprite = new Sprite();
  27.         
  28.         private var startX:Number = stage.stageWidth/2;
  29.         private var startY:Number = stage.stageHeight / 2;
  30.         private var endX:Number = stage.stageWidth;;
  31.         private var endY:Number = startY;
  32.         private var curX:Number = startX;
  33.         private var curY:Number = startY;
  34.         private var minAmplitude:Number = 5;
  35.         private var curAmplitude:Number = minAmplitude;
  36.         
  37.         private var heartBeat:Sound = new Sound();
  38.         private var isPlayed:Boolean = false;
  39.         
  40.         private var maskTimer:Timer = new Timer(10);
  41.         private var defaultMaskSpeed:int = 8;
  42.         private var beatSpeed:Number=0;
  43.         private var maxBeatSpeed:int = 170;
  44.         private var speedDownTimer:Timer = new Timer(50);
  45.         
  46.     
  47.         private var prevPoint:Point = new Point(0,0);
  48.         
  49.         private const BLACK:uint = 0x000000;
  50.         private const LINECOLOR:uint = 0xFFAACC;
  51.         public function checkmateProfessional() 
  52.         {
  53.             heartBeat.load(new URLRequest('http://usagifrask.com/checkmate/heartbeat.mp3'));
  54.             
  55.             addChild(container); 
  56.             addChild(maskShape); 
  57.             addChild(leftPad);
  58.             maskShape.graphics.lineStyle(2,BLACK);
  59.             maskShape.graphics.beginFill(BLACK);
  60.             maskShape.graphics.drawRect(00, stage.stageWidth/2, stage.stageHeight);
  61.             maskShape.graphics.endFill();
  62.             maskShape.filters = [new BlurFilter(100)];
  63.             container.cacheAsBitmap = true;
  64.             container.mask = maskShape;
  65.             
  66.             leftPad.graphics.lineStyle(2, BLACK);
  67.             leftPad.graphics.beginFill(BLACK);
  68.             leftPad.graphics.drawRect(00, stage.stageWidth/2, stage.stageHeight);
  69.             leftPad.graphics.endFill();
  70.             leftPad.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
  71.             leftPad.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {addSpeed(+15)});
  72.             speedDownTimer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {addSpeed(-3)});
  73.             speedDownTimer.start();
  74.             maskTimer.addEventListener(TimerEvent.TIMER, doMove);
  75.             maskTimer.start();
  76.             
  77.             writeLine();
  78.             
  79.         }
  80.         
  81.         private function doMove(e:TimerEvent):void 
  82.         {
  83.             maskShape.x += defaultMaskSpeed+beatSpeed*0.1;
  84.             if (!isPlayed) {
  85.                 isPlayed = true;
  86.                 heartBeat.play();
  87.             }
  88.             if (maskShape.x >= stage.stageWidth * 2) {
  89.                 isPlayed = false;
  90.                 maskShape.x = 0;
  91.                 writeLine();
  92.             }
  93.         }
  94.         
  95.         private function moveHandler (e:MouseEvent) :void
  96.         {    
  97.             addSpeed(int(Point.distance(prevPoint, new Point(mouseX, mouseY))/10));
  98.             prevPoint = new Point(mouseX, mouseY);
  99.         }
  100.         private function writeLine():void 
  101.         {
  102.             clearLine();
  103.             while (    (curX += 2) < endX ) {
  104.                 curY = startY;
  105.                 curAmplitude = minAmplitude + beatSpeed/2;
  106.                 if ( curX >10 && (curX  % (100-beatSpeed/5)) < 15)  {
  107.                     curY += int((Math.random() * curAmplitude * 2 )- curAmplitude) ;            
  108.                 }
  109.                 container.graphics.lineTo(curX, curY);
  110.             }
  111.         }
  112.         
  113.         private function clearLine():void
  114.         {
  115.             container.graphics.clear();
  116.             container.graphics.lineStyle(2, LINECOLOR);
  117.             container.graphics.moveTo(startX, startY);
  118.             curX = startX;
  119.         }
  120.         
  121.         private function addSpeed(val:int) :void{
  122.             beatSpeed += val;
  123.             if ( beatSpeed < 0) beatSpeed = 0;
  124.             else if (beatSpeed > maxBeatSpeed) beatSpeed = maxBeatSpeed;
  125.         }
  126.     }
  127. }
flash swf thumbnail play