typing.mxml==========================================================================================
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="500" height="300" creationComplete="init()">
<mx:Style>
Application{
backgroundColor : #ffffff;
fontSize : 12;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import flash.utils.*;
import flash.events.*;
private var totalTime:Number = 0;
private var startTime:Number;
private var success:int;
private var fail:int;
private var msg:Array;
private var msgNum:int;
private function textInfoResult(e:ResultEvent):void
{
var infoResult:XML = new XML(e.result);
msg = new Array();
var len:int = infoResult.msg.length();
for(var i:int=0; i<len; i++)
{
msg[i] = infoResult.msg[i];
}
shuffle(msg);
txtQuestion.text = msg[msgNum++];
txtInput.setFocus();
}
private function shuffle(_Arr:Array):void
{
var len:int = _Arr.length;
for(var i:int=0; i<len; i++)
{
var x:int = i;
var y:int = len*Math.random();
var z:Object = _Arr[x];
_Arr[x] = _Arr[y];
_Arr[y] = z;
}
}
private function changeHandler():void
{
if(txtInput.length == 1)
{
startTime = getTimer();
}
if(txtInput.text == txtQuestion.text.substr(0, txtInput.text.length))
{
txtInput.setStyle("color", "0x009900");
}
else{
txtInput.setStyle("color", "0xff0000");
}
}
private function init():void
{
textInfo.send();
addEventListener(KeyboardEvent.KEY_DOWN, doKeyDown);
}
private function doKeyDown(e:KeyboardEvent):void
{
if(e.keyCode == 13)
{
var tempSuccess:int;
var tempFail:int;
for(var i:int=0; i<txtQuestion.length; i++)
{
if(txtInput.text.charAt(i) == txtQuestion.text.charAt(i))
{
tempSuccess++;
}
else{
tempFail++;
}
}
success += tempSuccess;
fail += tempFail;
totalTime += (getTimer() - startTime)/1000/60;
txtSuccess.text = String(Math.round(success/(success + fail)*100));
txtFail.text = String(Math.round(fail/(success + fail)*100));
txtInstanceSpeed.text = String(Math.round(tempSuccess/(getTimer() - startTime)*1000*60));
txtMeanSpeed.text = String(Math.round(success/totalTime));
if(msgNum%msg.length == 0)
{
shuffle(msg);
}
txtQuestion.text = msg[(msgNum++)%msg.length];
txtInput.text = "";
}
}
]]>
</mx:Script>
<mx:HTTPService id="textInfo" url="./text.xml" useProxy="false" resultFormat="xml" result="textInfoResult(event)"/>
<mx:TextInput x="25" y="59" width="450" editable="false" id="txtQuestion"/>
<mx:TextInput x="25" y="112" width="450" change="changeHandler()" id="txtInput"/>
<mx:Label x="277" y="186" text="success :"/>
<mx:Label x="308" y="214" text="fail :"/>
<mx:Label x="281" y="242" text="current :"/>
<mx:Label x="274" y="270" text="average :"/>
<mx:Text x="348" y="186" text="0" textAlign="right" width="62" id="txtSuccess"/>
<mx:Text x="348" y="214" text="0" textAlign="right" width="62" id="txtFail"/>
<mx:Text x="348" y="242" text="0" textAlign="right" width="62" id="txtInstanceSpeed"/>
<mx:Text x="348" y="270" text="0" textAlign="right" width="62" id="txtMeanSpeed"/>
<mx:Label x="418" y="186" text="%"/>
<mx:Label x="417" y="214" text="%"/>
<mx:Label x="417" y="242" text="char/sec"/>
<mx:Label x="417" y="270" text="char/sec"/>
</mx:Application>
=====================================================================================================
text.xml==============================================================================================
<?xml version="1.0" encoding="utf-8"?>
<mssages>
<msg>Flex2.0에서는 한글입력이 느립니다.</msg>
<msg>나 태어날 때 나 울고 모두 웃었지만, 나 죽을 때 나 웃고 모두 울게 하리라.</msg>
<msg>재미가 없다면 왜 그걸 하고 있는가?</msg>
<msg>최고에 도달하려면 최저에서 시작하라.</msg>
<msg>지식보다는 상상력이 더욱 중요하다.</msg>
<msg>문제는 목적지에 얼마나 빨리 가느냐가 아니라 그 목적지가 어디냐는 것이다.</msg>
<msg>친구는 기쁨을 배로 늘리고 슬픔은 반으로 줄인다.</msg>
<msg>백권의 책에 쓰인 말보다 한 가지 성실한 마음이 더 크게 사람을 움직인다.</msg>
<msg>겸손한 자만이 다스릴 것이요, 애써 일하는 자만이 가질 것이다.</msg>
<msg>대안 없는 불평은 하지마라.</msg>
</mssages>
=====================================================================================================
'OM' 카테고리의 다른 글
컬러 팔레트 (0) | 2008.02.28 |
---|---|
색칠공부 (4) | 2008.02.23 |
영어 학습 컨텐츠 (0) | 2008.02.22 |
keyUtil (0) | 2008.02.09 |
달력을 이용한 다이어리 (0) | 2008.02.08 |
달력 (0) | 2008.02.07 |
D-day 구하기 2 (0) | 2008.02.07 |
D-day 구하기 1 (0) | 2008.02.05 |
아날로그 시계 (0) | 2008.02.04 |