forked from: forked from: Flasher格付けチェック〜フレームレートの目利きテスト〜

by ohisama forked from forked from: Flasher格付けチェック〜フレームレートの目利きテスト〜 (diff: 19)
♥0 | Line 126 | Modified 2013-02-03 12:54:40 | MIT License
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/bTTi
 */

<?xml version="1.0" encoding="utf-8"?>
<!-- forked from 9APPAT3CH's forked from: Flasher格付けチェック〜フレームレートの目利きテスト〜 -->
<!-- forked from clockmaker's Flasher格付けチェック〜フレームレートの目利きテスト〜 -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="465"
               minHeight="465"
               addedToStage="addedToStageHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.CloseEvent;
            import net.wonderfl.score.basic.BasicScoreForm;
            import net.wonderfl.score.basic.BasicScoreRecordViewer;
            private const MAX_SEC : uint = 30;
            private const FPS : Array = [12, 18, 24, 30, 48, 60];
            private var ball : Sprite;
            [Bindable]
            private var correct : int = 0;
            private var currentFpsIndex : int;
            private var rect : Sprite;
            private var rect3D : Sprite;
            private var startTime : Number = 0;
            protected function addedToStageHandler(event : Event) : void
            {
                ball = new Sprite();
                ball.graphics.beginFill(0xFF0000);
                ball.graphics.drawCircle(25, 25, 50);
                canvas.addChild(ball);
                rect = new Sprite();
                rect.graphics.beginFill(0x00FF00);
                rect.graphics.drawRect(-50, -50, 100, 100)
                canvas.addChild(rect);
                rect3D = new Sprite();
                rect3D.graphics.beginFill(0x0000FF);
                rect3D.graphics.drawRect(-50, -50, 100, 100)
                canvas.addChild(rect3D);
                initGame();
            }
            private function initGame():void
            {
                addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                correct = 0;
                startTime = getTimer();
                startGame();
            }
            private function enterFrameHandler(event : Event) : void
            {
                rect.x = 150;
                rect.y = 100;
                rect.rotation = getTimer() / 10;
                ball.x = 233 + 233 * Math.sin(getTimer() / 400);
                ball.y = 250;
                rect3D.rotationY = getTimer() / 20;
                rect3D.x = 300;
                rect3D.y = 100;
                var remain : Number = (MAX_SEC * 1000 - getTimer() + startTime);
                timeNum.text = "残り:" + remain + "ms";
                if (remain <= 0)
                {
                    removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
                    Alert.show("[Flasher格付けチェック〜フレームレートの目利きテスト〜]\nあなたの正解数は" + correct + "でした。\nTwitterに投稿しますか?", "", 3, null, finish);
                }
            }
            private function startGame():void
            {
                var oldIndex : int = currentFpsIndex;
                while (currentFpsIndex == oldIndex)
                {
                    currentFpsIndex = FPS.length * Math.random() >> 0;
                }
                stage.frameRate = FPS[currentFpsIndex];
                new BasicScoreForm(this, 5, 5, 776);
                var ranking : BasicScoreRecordViewer = new BasicScoreRecordViewer(this, 5, 200);
            }
            private function closeHandler(event : Event) : void
            {
                startGame();
            }
            private function finish(event : CloseEvent) : void
            {
                if (event.detail == Alert.YES)
                {
                    var req : URLRequest = new URLRequest("http://twitter.com/share?text=" + escapeMultiByte("[Flasher格付けチェック〜フレームレートの目利きテスト〜]\nあなたの正解数は" + correct + "でした。") + "&url=" + escapeMultiByte("http://wonderfl.net/c/4lJc/"))
                    navigateToURL(req, "_blank");
                }
                initGame();
            }
            protected function btn_clickHandler(event : MouseEvent) : void
            {
                var ind : int = event.currentTarget.name.split("_")[1];
                if (ind == currentFpsIndex)
                {
                    Alert.show("Correct!", "", 4, null, closeHandler);
                    correct++;
                }
                else
                    Alert.show("Mistake!\n正解は" + FPS[currentFpsIndex] + "fpsでした。", "", 4, null, closeHandler);
            }
        ]]>
    </fx:Script>
    <mx:UIComponent id="canvas" />
    <s:VGroup y="350"
              width="100%"
              horizontalAlign="center">
        <s:Label text="Select Correct FPS" />
        <s:HGroup width="100%"
                  horizontalAlign="center">
            <s:Button label="FPS:12" name="id_0" click="btn_clickHandler(event)" />
            <s:Button label="FPS:18" name="id_1" click="btn_clickHandler(event)" />
            <s:Button label="FPS:24" name="id_2" click="btn_clickHandler(event)" />
        </s:HGroup>
        <s:HGroup width="100%"
                  horizontalAlign="center">
            <s:Button label="FPS:30" name="id_3" click="btn_clickHandler(event)" />
            <s:Button label="FPS:48" name="id_4" click="btn_clickHandler(event)" />
            <s:Button label="FPS:60" name="id_5"  click="btn_clickHandler(event)" />
        </s:HGroup>
        <s:HGroup width="100%"
                  horizontalAlign="center">
            <s:Label text="{'正解数:' + correct + '回'}" />
            <s:Label id="timeNum" />
        </s:HGroup>
    </s:VGroup>
</s:Application>