2010-07-30 89 views
0

我必须假设我缺少一些简单的东西,或者我不理解某些东西,但我似乎无法确定这一点。对字符串变量AS3数组的更改不会自动更新变量

我有一个字符串列表添加到数组,然后尝试使用我读入的数据在for-loop中设置这些值。数组得到更新,但数组中包含的值不包含。我也有一组按钮,我更新的方式非常好,但字符串看起来并不一样。我已经尝试过移动字符串数组来给它完整的范围,但仍然没有...我错过了什么?

public class test extends Sprite 
{ 
    // Declare a list of strings 
    protected var title0:String = undefined; 
    protected var title1:String = undefined; 
    protected var title2:String = undefined; 

    protected function onDataLoad(evt:Event):void{ 

    var titleArray:Array = new Array(title0,title1,title2); // Array of strings 

    for(i=0; i<=evt.target.data.count; i++){ 
     titleArray[i] = evt.target.data["title"+i]; // attempt to set the title values 
    } 
    } 

    protected function function0(e:Event):void { 
    trace("My title is: " + title0); // title0 is null 
    } 
} 

回答

0

它与AS3如何存储数组元素有关。你需要明确地设置实例属性(title1,title2,title3)和相关的数组元素(数组[0],数组[1],数组[2])来实现你想要的。或者,您可以完全删除实例属性(title0,title1,title2),并使用该数组来存储您的值。例如:

public class test extends Sprite 
{ 

    protected var _titleArray:Array = []; 

    protected function onDataLoad(evt:Event):void{ 

    for(i=0; i<=evt.target.data.count; i++){ 
     // set the title values 
     _titleArray[i] = evt.target.data["title"+i]; 
    } 
    } 

    protected function function0(e:Event):void { 
    trace("My title is: " + _titleArray[0]); 
    } 
} 
+0

这就是我应该做的事情开始...更加灵活。我唯一改变的是我把标题值推到了数组上,而不是通过索引来设置它们(只是个人偏好)。 _titleArray.push(evt.target.data [“title”+ i]); – taipan 2010-07-30 20:56:22

+0

是的,这是一个更清洁的方法。乐意效劳! – heavilyinvolved 2010-07-30 20:58:16