Flasher格付けチェック〜フレームレートの目利きテスト〜
制限時間は30秒。
間違えた数は問いません。
♥14 |
Line 119 |
Modified 2012-01-19 14:58:32 |
MIT License
archived:2017-03-07 03:51:00
ActionScript3 source code
/**
* Copyright clockmaker ( http://wonderfl.net/user/clockmaker )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4lJc
*/
<?xml version="1.0" encoding="utf-8"?>
<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;
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];
}
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>