DFdou's Blog Life is short,Be yourself.

902/090

Flash AS2-Component Bug?

这个Bug由lostfire98在blueidea提出,原帖如下:http://bbs.blueidea.com/viewthread.php?tid=2909743
先介绍下Stage上的元件,按钮btn1,输入框myTxt,和一个组件,我只测试了UI里的几个,Button和Combobox。
测试代码如下:
[js]
btn1.onRelease = function ()
{
myTxt.text += '!';
};
[/js]
理论上来说,每点一下按钮btn1,输入框myTxt的内容都会多一个"!",而跟库中组件无关,就像下边这个Demo一样:

但实际却不是这样的,当鼠标不在输入框内时,btn1的确是可以正常使用;
但如果库中有组件,在光标留在输入框中的时候,你再点击btn1就会发现onRelease事件变的不好用,有的点击有效,有的则无效。
但是写有同样onRelease事件的组件btn2,却可以正常工作,Demo如下:

目前不知道是什么原因导出的Bug,猜测和Component有关……
知道原因的请留言,蓝色那边有结果了我也有第1时间更新到这里。
09/02/17有了结果,原来是因为焦点的原因造成的这个问题,下边是个加入焦点控制后的Demo:

代码如下:
[js]
btn1.onRelease = btn2.onRelease = function ()
{
mtTxt.text += '!';
_root.focusManager.setFocus(this);
};
[/js]
增加了焦点管理代码,点击按钮是把焦点设置到了按钮上,而不是输入框,由于点击组件按钮一切正常,而MC Button却会出错,我估计是因为组件点击后会自动获得焦点,而MC Button则不会,所以焦点在输入框和MC Button之间出现错误,导致Bug出现。