3

このサイトのリンクテキストを参照します

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

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

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

4

1 に答える 1

4

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

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

私が提案できる唯一のことは、Adobe JIRAにサインアップし、バグに投票し、4.5でのコンパイラー修正がいくらかの救済をもたらすことを期待することです。

于 2010-10-29T10:49:18.220 に答える