0

次のタグを持つ mxml ページがあります。

<fx:Declarations>
        <mx:StringValidator id = "validator"
                            source = "{myTextInput}"
                            property = "text"
                            required = "true"
                            maxLength = "128"/>
<fx:Declarations>

別のページで同じことを行いたいのですが、アクション スクリプトを使用してバリデーターを動的に構築および追加します。バリデータを構築するための次のコードがあります。

var lengthTextValidator:StringValidator  = new StringValidator();
lengthTextValidator.source = fieldTextInput;
lengthTextValidator.property = "text";
lengthTextValidator.required = true;

作業を完了してバリデーターをページに追加するにはどうすればよいですか? ありがとう!

4

1 に答える 1

2

UIComponent を別の UIComponent の子として追加するには、addChild() を使用できます。

myComponent.addChild(myOtherUIComponent);

ただし、バリデーターは UIComponent または DisplayObject ではありません。ページに子として追加されません。MXML ファイルの一部を、同じことを行う ActionScriptの一部に置き換えるだけであればfx:Declaration、それ以上のことを行う必要はありません。

lengthTextValidator を、コンポーネントのパブリックまたは保護されたインスタンス変数にします。

public var lengthTextValidator:StringValidator  = new StringValidator();

これは、変数がコンポーネント内で使用されることを意味します。パブリックまたはプライベートのない元の構文は、メソッドの実行が完了したときにアクセスできないメソッド固有の変数を作成するか、変数を内部名前空間に配置します。

コードの残りの部分は、メソッドに入れる必要があります。ActionScript クラスの場合。コンストラクタに入れることができます。または、MXML クラスの場合は、initialize または creationComplete イベント ハンドラーに配置できます。

lengthTextValidator.source = fieldTextInput;
lengthTextValidator.property = "text";
lengthTextValidator.required = true;

バリデータ コードを別のクラスに配置する場合。次に、クラスをインポートしてそのインスタンスを作成する必要があります。

import myPackage.MyClass;
public var myClass :MyClass = new MyClass();

次に、コンポーネントの public 変数にアクセスして、バリデーターにアクセスできます。

myClass.lengthTextValidator;

ついに; そのスニペットをクラスではない ActionScript ファイルに移動したい場合。fx:Script ブロック内で include ディレクティブを使用できます。

<fx:Script><[[
 include "myASFile.as"
]]></fx:Script>

最後のアプローチは非正統的であり、通常は推奨されません。

于 2013-05-05T13:16:38.543 に答える