如何根据另一个文本字段更改数组?

时间:2013-06-01 06:04:23

标签: actionscript-3

我有一个TheList.as类..我已经为Android应用程序创建了一个列表。 这是TheList.as(减少到这个问题的具体内容)

public var _ListItem:ListItem;
public var _Data:Array;
public var _Values:Array; 
public var $CurrentValue:String;
public var _TextLabel:TextField;

public function TheList(Data:Array,Values:Array)
    {
        _Data = Data;
        _Values = Values;



        initialize();
    }

    private function initialize():void
    {

        _TextLabel = new TextField();
        addChild(_TextLabel);
        _TextLabel.text = "Data";
        _Container = new ListContainer  ;
        addChild(_Container);
        _Container.x = 0;
        _Container.y = 0;
        currentY = _Container.y;
        lastY = _Container.y;

        for (var i:int = 0; i < _Data.length; i++)
        {
            _ListItem = new ListItem  ;
            _Container.addChild(_ListItem);

            _ListItem.y = _ListItem.height * i;
                              _ListItem.addEventListener(MouseEvent.MOUSE_DOWN,onItemDown,false,0,true);
            _ListItem.addEventListener(MouseEvent.MOUSE_UP,onItemUp,false,0,true);
            _ListItem.mouseChildren = false;
            _ListItem.value = _Values[i];
            _ListItem.name = _Data[i];
            _ListItem.ItemLabel.text = _ListItem.name ;


        }

    }

这是“TheList”类正在使用(再次减少到特定的东西)

$myList = new TheList($Data,$Values);
        addChild($myList);
        $myList.x = -240;
        $myList.y = -203;
        $myList.visible = false;

        $ListFrom = new TheList($DataFromTo, $ValuesFromTo);
        addChild($ListFrom);
        $ListFrom.x = -240;
        $ListFrom.y = -203;
        $ListFrom.visible = false;
        $ListFrom._TextLabel.text = $DataFromTo[0];

        $ListTo = new TheList($DataFromTo, $ValuesFromTo);
        addChild($ListTo);
        $ListTo.x = -240;
        $ListTo.y = -203;
        $ListTo.visible = false;
        $ListTo._TextLabel.text = $DataFromTo[0];

现在我想要实现的是我想要改变“$ Data”和“$ Values”Arrays ..你可以看到我有一个主列表和两个子列表...当选择“时间”时主要列表,我希望子列表填充“时间”相关的单位名称...我试过

if($myList._TextLabel.text == "Time")
{
 $ListFrom._Data = ["this", "this", "this" etc]
}

但它不起作用。我也没有收到任何错误。我真的很感激任何帮助!

1 个答案:

答案 0 :(得分:1)

您尝试实现的目标并非如此。您使用数据字段初始化列表。重置数据时,需要再次使列表无效。您可以使用项目设置器

来实现此目的
private var __Data:Array;

public function get _Data():Array
{
     return __Data;
}

public function set _Data(value:Array):void
{
     this.__Data = value;
     initialize();
}

确保在重新重建之前首先清理列表。

您的代码:

$ListFrom._Data = ["this", "this", "this" etc]

将自动调用setter。 getter和setter方法看起来像一个函数,但是像属性一样被调用。的意思是:

object.property = "something" //will call the setter
var something:String = object.property //will call the getter