想知道是否有人能告诉我这里我做错了什么。
我有一些旧的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;
谢谢! :)
答案 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;关键可能在于此数据的格式。