Flash Player 10中关于TextField的textInput与change事件行为的改变

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

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

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

type.mxml

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

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

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

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

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