2016-10-15 2 views
1

これはAS3のバグである可能性があります。エラーのリストがmouseEventに関連付けられていないためですが、これの底に達するのが好きです。私はこのプロジェクトに取り組んでおり、3つのコンボと2つの入力テキストフィールドを含む検索機能のムービークリップを持っています。ユーザーがテキストフィールドにテキストを入力すると、コンボを無効にしたい場合は、選択したインデックスを-1に設定します。ユーザーがテキストフィールドをクリアすると、コンボが有効になります。 CS4が上記のエラーを投げています。それはとても奇妙ですか、それとも私ですか?AS3エラー1119:静的型flash.events:MouseEventを持つ参照による未定義プロパティの変更CHANGE

マイコード:

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

それが動作する...いくつかの光を当てることができます誰もがありますこれ?

答えて

2

問題は、変数の名前付けの方法です。それはEventクラスがあり、同じ名前だから

function shwSrch(Event:MouseEvent):void 

ここでは、悪い選択であるパラメータ名として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); 
+0

を行うことができます。私はあなたの提案を試みましたが、それは非常にうまく動作します....まだあなたの助言のためにAS3の学習曲線があります。 – Filious

関連する問題