簡體   English   中英

AS3錯誤1119:通過靜態類型為flash.events:MouseEvent的引用訪問未定義的屬性CHANGE

[英]AS3 error 1119: Access of undefined property CHANGE through a reference with static type flash.events:MouseEvent

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

它有效...有誰能對此有所啟發?

問題是您如何命名變量。

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

如果您不使用處理函數中的參數,則只需

    srch.npt1.it.addEventListener(Event.CHANGE, txtchng);
    txtchng(null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM