偶尔发现原来写的打字测试有问题了,仔细研究了一下,发现是FlashPlayer的原因。

打字游戏中,对文字输入正确与否的判断,我采用的是TextField的textInput事件和change事件。问题就出在这里:将FlashPlayer升级到10以后,这两个事件的行为发生了改变。

在FlashPlaye r10以前,如果在TextField中输入整句的文字,文字有多少个,textInput事件和change事件就会发生多少次。而对于FlashPlayer来说,则是不论文字有多少个,只要是一次输入的,就只会发生一次。这种情况对于英文来说倒是无所谓,但对于中文来讲,由于常用的是词语输入,就会有很大影响。看下面的代码:

type.mxml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:TextArea textInput="textInput(event)" change="change(event)" width="100%" height="100%"/>
<mx:Script>
<![CDATA[
private function textInput(evt:TextEvent):void
{
trace(evt.text, evt.target.length);
}
private function change(evt:Event):void
{
trace(evt.target.text, evt.target.length);
}
]]>
</mx:Script>
</mx:Application>

以输入“白日依山尽”(整句输入)为例,在FlashPlayer 9中,trace的信息如下:

白 0
白 1
日 1
白日 2
依 2
白日依 3
山 3
白日依山 4
尽 4
白日依山尽 5

在FlashPlayer 10中,trace的信息如下:

白日依山尽 0
白日依山尽 5

留言