AS2推送到剪辑外的数组什么也没做

时间:2014-07-20 17:36:33

标签: arrays flash actionscript-2

想知道是否有人能告诉我这里我做错了什么。

我有一些旧的AS2闪存代码,我试图开始工作。

首先,我在主时间轴的第1帧中创建了一些数组,如此 -

var typeArr:Array = new Array();

for (var i:Number = 1; i < 5; i++) 
{
    _root.typeArr[i] = "data goes here";
}

然后我在主舞台上动态附加了一个动画片段,当点击它时,通过按下字符串&f; foo&#39;来附加我们创建的其中一个数组。对它 -

stop();

_root.myType=3;//this can be any of our array numbers

this.onPress=function(){

    var foo:String="test";

    _root.typeArr[_root.myType].push(foo);

    trace(_root.typeArr[_root.myType]);

}

其中_root.typeArr[_root.myType]是数组名称和数字_root.typeArr3,但推送数据不起作用并且不返回任何内容。

但是,如果我直接使用 -

进行测试
_root.typeArr[_root.myType]=foo;

它会存储一次数据(_root.typeArr3=test),因此我无法理解为什么它不会像每次多个元素一样推送到该数组 - &#34; test,test ,测试&#34;

这让我发疯了。

谢谢! :)

2 个答案:

答案 0 :(得分:0)

    var typeArr:Array = new Array();

    // 'i' must start from 0 because the first element is typeArr[0]
    for (var i:Number = 0; i < 5; i++)  
    {
        typeArr[i] = i;
        // trace(typeArr[i]); // 0,1,2,3,4
    }

    // trace(typeArr); // 0,1,2,3,4

    myType = 3;

    bt.onPress = function()
    {
        var foo:String = "test";
        // push method puts the element at the end of your array
        // typeArr.push(foo); 
        // trace(typeArr); // 0,1,2,3,4,test

        // splice method replace the 4e element (index 3) of your array
        typeArr.splice(myType, 1, foo);
        trace(typeArr); // 0,1,2,test,4
    }

答案 1 :(得分:0)

_root.typeArr[_root.myType]等于"data goes here",因此您将字符串推送到字符串,这不起作用。

如果您想追加新字符串,您应该执行以下操作:

_root.typeArr[_root.myType]+=foo;

您将获得:data goes heretest

如果你有不同的数据结构而不是&#34;数据就在这里&#34;关键可能在于此数据的格式。