比如在一个用flash做的聊天室中, 用回车键来发送聊天消息. 一般都是侦听回车键, 侦听到回车键被按下后就把消息发送出去. 但是如果碰到一些输入法是使用回车键来选字的, 这个时候flash侦听到回车键被按下, 就把还没打完的消息发送出去了.
造成这个问题是因为flash中只是单纯的侦听回车键而已, 所以无论当前是否在输入消息, 只要回车键按下, 都会触发 发送消息的程序.
解决这个问题只要在侦听回车键的代码中加入一个判断就可以了.
因为当我们使用那些需要回车来选字的输入法时, 鼠标焦点已经转移到输入法的面版上了.
所以只要判断当前鼠标焦点是否在输入框内. 就能避免这个问题出现了.
[img]/uploads/allimg/080326/1152020.gif[/img]
程序代码
[1b]var[/1b] enterKeyListener:[1b]Object[/1b] = [1b]new[/1b] [1b]Object[/1b] ();
enterKeyListener.[1b]onKeyDown[/1b] = [1b]function[/1b] ()
{
[1b]if[/1b] ([1b]Key[/1b].[1b]getCode[/1b] () == [1b]Key[/1b].[1b]ENTER[/1b])
{
//判断当前鼠标焦点是否在输入框内
[1b]if[/1b] ([1b]String[/1b] (Text_InstanceName) == [1b]Selection[/1b].[1b]getFocus[/1b] ())
{
[1b]send[/1b] ();
}
}
};
[1b]Key[/1b].[1b]addListener[/1b] (enterKeyListener);
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/419.html
造成这个问题是因为flash中只是单纯的侦听回车键而已, 所以无论当前是否在输入消息, 只要回车键按下, 都会触发 发送消息的程序.
解决这个问题只要在侦听回车键的代码中加入一个判断就可以了.
因为当我们使用那些需要回车来选字的输入法时, 鼠标焦点已经转移到输入法的面版上了.
所以只要判断当前鼠标焦点是否在输入框内. 就能避免这个问题出现了.
[img]/uploads/allimg/080326/1152020.gif[/img]
程序代码
[1b]var[/1b] enterKeyListener:[1b]Object[/1b] = [1b]new[/1b] [1b]Object[/1b] ();
enterKeyListener.[1b]onKeyDown[/1b] = [1b]function[/1b] ()
{
[1b]if[/1b] ([1b]Key[/1b].[1b]getCode[/1b] () == [1b]Key[/1b].[1b]ENTER[/1b])
{
//判断当前鼠标焦点是否在输入框内
[1b]if[/1b] ([1b]String[/1b] (Text_InstanceName) == [1b]Selection[/1b].[1b]getFocus[/1b] ())
{
[1b]send[/1b] ();
}
}
};
[1b]Key[/1b].[1b]addListener[/1b] (enterKeyListener);
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/419.html