2011-12-03 14 views
0

setTextFormatを使用してtextFieldsに書式を適用するコードをいくつか作成しました。私は今それを変更する必要があるので、テキストフィールドに特定のタイトルがある場合は、それをフォーマットに追加します(大文字にする)。setTextFormatをas3に置き換えます

いくつかの回避策がありますが、理想的には、テキストフィールドの名前をチェックするsetTextFormatクラスまたはtextFormatクラスのオーバーライドを作成し、他の指定されたすべてのフォーマットを適用する前に特定の名前を付けるのが理想です。私は(幅や高さなどの)セッターをオーバーライドする方法を知っていますが、特定のプロパティをオーバーライドするための情報は見つかりません。

誰でも私に何かポインタを教えてもらえますか?

答えて

0

[[編集]]

は疑問がAS2を参照していたなんて気付きませんでした。以下の答えはAS3です。


TextFieldオブジェクトを拡張し、set defaultTextFormatメソッドをオーバーライドすることをお勧めします。

import flash.text.TextField; 
import flash.text.TextFormat; 

class MyTextField extends TextField 
{ 

    public function MyTextField() 
    { 
     super(); 
    } 

    override public function set defaultTextFormat(value:TextFormat):void 
    { 
     super.defaultTextFormat = value; 
    } 

} 

運が良かった!

+0

こんにちは、質問はAS3を参照していました。ありがとう、私はテキストフィールドのサブクラスを作成せずにこれを解決することを望んでいた。 – mgmaximus

0
public class MyField extends TextField { 
    public function MyField() { 
     super(); 
    } 
    override public function setTextFormat(format:TextFormat):void { 
      if (this.name == "someName") { 
      this.capitalize(); 
      } 
      super.setTextFormat(format); 
    } 
    private function capitalize():void 
    { 
     //code to capitalize text 
    } 

} 
+0

ありがとう、私は特定のテキストサブクラスを作成せずにそうしたいと考えていました。それは不可能だと思います。 – mgmaximus

+0

この関数を実装するには、ドキュメントクラスやユーティリティクラスに関数を書くことができますが、 'textField.setTextFormat(format)'のコードを 'setTextFormat(textField、format)'のように変更する必要があります。 'TextField'クラスを拡張せずにすべてのtextFieldをそのサブクラスに変換せずに、デフォルトのsetTextFormatの動作を変更することはできません。 – package

+0

ありがとう – mgmaximus

関連する問題