0

プロパティチェーンのオブジェクトから値を取得するFlashまたはFlexの既存のクラスはありますか?

たとえば、次のようなものです。

private function labelFunction(item:Object, column:GridColumn):String {
     // where dataField equals "fields.status.name"
     var value:String = PropertyChain.getValue(field, column.dataField);
     return value;
}

~~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~
このプライベートメソッドはBindingクラスにもあり、カスタムクラスで使用できる可能性があります。

/**
 *  @private
 */
private static function getFirstWord(destStr:String):String
{
    // indexPeriod and indexBracket will be equal only if they
    // both are -1.
    var indexPeriod:int = destStr.indexOf(".");
    var indexBracket:int = destStr.indexOf("[");
    if (indexPeriod == indexBracket)
        return destStr;

    // Get the characters leading up to the first period or
    // bracket.
    var minIndex:int = Math.min(indexPeriod, indexBracket);
    if (minIndex == -1)
        minIndex = Math.max(indexPeriod, indexBracket);

    return destStr.substr(0, minIndex);
}
4

1 に答える 1

3

既存の機能はないと思います。Objectしかし、それを作成するのは非常に簡単で、一般的なソースに限定する必要はありません。角かっこ表記を使用して、任意のオブジェクトの任意のメンバーを名前で取得できるからです。この単純なバージョンでは、検証は行われません。

public static function getByName(root:*, member:String):* {
    var memlist:Array = member.split('.');
    var temp:* = root;
    for(var i:uint = 0; i < memlist.length; i++)
        temp = temp[memlist[i]];
    return temp;
}

// And you can use this even on strongly-typed values, such as a MovieClip:
trace("stageWidth =", SomeUtil.getByName(mc, "stage.stageWidth"));
于 2012-09-05T20:57:43.327 に答える