誰かが私にこの一般的な拘束力のある落とし穴を説明してもらえますか? (間違ったバインド可能なイベント名を使用)

StackOverflow https://stackoverflow.com/questions/4050013

  •  27-09-2019
  •  | 
  •  

質問

このサイトを参照してください テキストをリンクします

Bindable]タグで間違ったイベント名を使用すると、アプリケーションがプロパティをバインドしない可能性があり、その理由さえわかりません。カスタム名で[Bindable]タグを使用すると、以下の例は良いアイデアのように見えます。

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event=EVENT_CHANGED_CONST)] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

上のコードは、静的プロパティをイベント名に割り当て、同じ割り当てを使用してイベントを発送します。ただし、値が変化すると、バインディングが機能しないように見えます。その理由は、イベント名が変数の値ではなくevent_changed_constになるためです。

コードは次のように書かれている必要があります。

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event="eventChangedConst")] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

私は同意します、間違った例は良い考えのように見えます、そして、私はそれが正しい方法であり、タイピングエラーの可能性を避けるので、私はそれをそのようにします。価値の代わりに使用される定数の名前がなぜですか?確かにこれは正しくできませんか?

あなたの洞察に感謝します

役に立ちましたか?

解決

標準のフレックスコンパイラは時々それほど賢くないからです...そして私はあなたの痛みを感じます!私はこの正確な問題について数回以上不平を言った。

私が正しく覚えていれば、それはコンパイラが複数のパスを行うためです。早期パスの1つは、メタデータをAS Codeに変更します。コンパイラのこの時点で、ASコードの残りの部分を解析していないため、他のファイルの静的変数への定数または参照を解析することはできません。

私が提案できる唯一のことは、Adobe Jiraにサインアップし、バグに投票し、4.5のコンパイラが修正されたことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top