1

TextFormatsが属するTextFieldsにTextFormatsを適用する関数を作成しようとしています。問題は、それを適切な「フォーム」にするために管理していないことです(これに適切なフォームがある場合でも)。

私の機能は今のところこんな感じです

function applyFormat(TextFild:String,Format:String,EmbFont:String,NameInJson:String){

//
//example:applyFormat("myTextField","myTextFormat","myFont","TextStuff")
//  
//myData=json object
//all textfields etc. already exist. Just anyone wants to ask if they've been already generated.

//at first i thought it could be as easy as this
this[Format].font=myData.NameInJson.Font //doesn't work obviously

//then I tried this method
this[Format].font=myData.this[NameInJson].Font //doesn't work either

//couldn't find a real solution for this on the internet...    
//how it should turn out in the end: myTextFormat.font=myData.TextStuff.Font
}

myDataの関連部分は次のようになります。

"TextStuff":
{
"Font":"Arial",
"Size" : "16",
"Bold" : "true",
"Color" : "0xFFFFFF"
}

これを可能にするためにJsonファイルを変更する必要がありますか?この種の変数/値を処理する方法を見落としていますか?

4

1 に答える 1

1

this[Format]Formatという名前のクラスのプロパティを検索します。これが機能するには、クラスが動的である必要があります。

インスタンスをそのクラスのオブジェクトに保持するTextFormatと、管理が容易になります。

// this is a property in the class
private var _textFormats:Object = {};

// create and store text formats in the object
var textFormat:TextFormat = new TextFormat();
_textFormats["myTextFormat"] = textFormat;

ここで、次のようなJSONテキスト文字列を取得するとします。

{
"TextStuff":{
    "Font":"Arial",
    "Size" : "16",
    "Bold" : "true",
    "Color" : "0xFFFFFF"
  }
}

以下はこの呼び出しで機能するはずですapplyFormat("myTextField","myTextFormat","myFont","TextStuff")

function applyFormat(TextField:String, Format:String, EmbFont:String, NameInJson:String):void
{
    var myData:Object = JSON.parse(theJSonString);
    _textFormats[Format].font = myData[NameInJson].Font;
}
于 2013-03-06T17:27:52.220 に答える