我试图TextInput
在一个按钮内部有一个,但似乎我的按钮拦截了我之前的所有鼠标事件TextInput
。
基本上我有这样的课BaseButton
:
public class BaseButton extends Sprite
{
[...]
public function addMouseListeners( target : InteractiveObject = null ) : void {
if ( !target ) target = this;
target.addEventListener(MouseEvent.ROLL_OVER, mouseOverHandler, false, 0, true);
target.addEventListener(MouseEvent.ROLL_OUT, mouseOutHandler, false, 0, true);
target.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 0, true);
target.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 0, true);
}
[...]
}
我要放置TextInput
扩展的类BaseButton
public class AddFilterDropDownListItem extends BaseButton {
private var _input:TextInput;
public function AddFilterDropDownListItem() {
super();
}
override protected function setupAssets():void {
_input = new TextInput();
_input.height = 40;
_input.width = 240;
this.addChild(_input);
_input.appendText("Add..");
}
}
我无法编辑TextInput
,点击事件似乎被BaseButton
. 我不明白为什么,作为一个孩子BaseButton
,我TextInput
没有优先权?
TextInput
我可以通过将其添加到父级来解决我的问题:
override protected function setupAssets():void {
_input = new TextInput();
_input.height = 40;
_input.width = 240;
parent.addChild(_input); //<------ dirty solution
_input.appendText("Add..");
}
你能解释一下为什么它失败了吗?我怎样才能干净地解决它?
PS:我无法更改项目的架构。我的课必须延长BaseButton
,我不能改变BaseButton
。