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

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:Flash Player 10中关于TextField的textInput与change事件行为的改变
  • 本文链接:http://zengrong.net/post/557.htm

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

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

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

type.mxml

<?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