AS3错误1119:通过带有静态类型flash.events:MouseEvent的引用访问未定义的属性CHANGE

时间:2016-10-15 11:48:24

标签: actionscript-3 flash

这可能是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));
        }

它有效......有没有人可以对此有所启发?

1 个答案:

答案 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));