这可能是AS3中的一个错误,因为它在错误中列出的事件与mouseEvent没有关联,但我真的想深究这一点。我一直在研究这个项目并拥有一个用于搜索功能的动画片段,里面有3个组合和2个输入文本字段。当用户在文本字段中输入文本时我想禁用组合,将所选索引设置为-1。如果用户清除了我想要启用组合的文本字段。 CS4抛出了上述错误。这太奇怪了还是我呢?
我的代码:
fltr.btn.addEventListener(MouseEvent.CLICK, shwSrch);
function shwSrch(Event:MouseEvent):void{
popcmb1(); //function to populate combo 1
srch.canNow.button.addEventListener(MouseEvent.CLICK, cans);
srch.srchNow.button.addEventListener(MouseEvent.CLICK, gos);
srch.npt1.it.addEventListener(Event.CHANGE, txtchng);
srch.npt1.it.dispatchEvent(new Event(Event.CHANGE));
}
function txtchng(event:Event):void{
if (srch.npt1.it.length >0){
//DISABLE COMBO AND NPT2
srch.cmb1.cmb.enabled = false;
srch.cmb1.cmb.selectedIndex = -1;
srch.cmb1.cmb.prompt = "All";
cmb1si = gSrch.cmb1.cmb.selectedIndex;
}
else{
srch.cmb1.cmb.enabled = true;
srch.npt1.it.selectable = true;
srch.npt1.it.type = TextFieldType.INPUT;
srch.npt1.it.borderColor = 0x000000;
}
npt1 = srch.npt1.text;
}
所以,当我运行这个新添加的代码时,它会抛出错误1046:找不到类型或者不是编译时常量:事件。 我已经有了一行' import flash.events.Event;' 我已经进行了相当多的实验,并指出如果我为侦听器创建一个单独的函数,然后使用shwSrch函数调用它:
function lstnrs():void{
srch.npt1.it.addEventListener(Event.CHANGE, txtchng);
srch.npt1.it.dispatchEvent(new Event(Event.CHANGE));
}
它有效......有没有人可以对此有所启发?
答案 0 :(得分:2)
问题在于如何命名变量。
if (hi <= lo)
这里使用function shwSrch(Event:MouseEvent):void
作为参数名称,这是一个不好的选择,因为它与Event
类具有相同的名称。稍后,您添加一个监听器。
Event
现在还不清楚你是在引用类还是参数变量名。对于后者,您会收到错误。
要解决此问题,请使用约定来启动带有小写字母的变量名称和带有大写字母的类名。
srch.npt1.it.addEventListener(Event.CHANGE, txtchng);
旁注:你是否真的需要在添加监听器之后显示事件,例如这里?
function shwSrch(mouseEvent:MouseEvent):void
如果您不在处理程序函数中使用该参数,则只需执行
即可 srch.npt1.it.addEventListener(Event.CHANGE, txtchng);
srch.npt1.it.dispatchEvent(new Event(Event.CHANGE));