forked from: forked from: Flasher格付けチェック〜フレームレートの目利きテスト〜
forked from forked from: Flasher格付けチェック〜フレームレートの目利きテスト〜 (diff: 19)
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>