2005/09/01 | Array的用法
类别(flash As) | 评论(0) | 阅读(566) | 发表于 17:00
//initialize
nw =13;
nh = 8;
pix = new Array(nw, nh);
t = 0;
for (i=1; i<=nw; i++) {
for (j=1; j<=nh; j++) {
ij = i*10+j;
duplicateMovieClip(m1, "pix" add ij, ij);
pix[i, j] = eval("pix" add ij);
pix[i, j]._x = i*m1._width;
pix[i, j]._y = j*m1._height;
}
}
for (i=1; i<=nw; i++) {
for (j=1; j<=nh; j++) {
removeMovieClip(pix[i,j]);
}
}
---------------------------------------------------------------

楼主可能对flash 中AS中Array不是很了解。建议看一看相关的资料。
我这里大体提一下(从书本上拷贝的):Array(数组对象)允许用户访问和操纵数组。数组其实也是对象,它的属性可以通过数组中代表属性位置的数字来区别。该数字也被应用为索引。所有的数组索引均已0为起点。
数组对象的构造方法:
new Array()
new Array(length)//(length指定数组中元素个数)
new Array(element0,element1,element2,...,elecmentN)//(elecmentN两个或者两个以上任意值的列表。这些值可以是数字、字符串、对象或者其他数组。数组中第一个元素的索引号或位置总是0)
---------------------------------------------------------------

楼主 pix = new Array(nw, nh); 这样定义的意图是得到一个二元数组。但在flash AS中并不支持二元数组。
pix[i, j] = eval("pix" add ij); 可以执行是因为flash AS中字符串和数值可以相互转化。
加入此处i=3,j=2,那么得到的就是pix[2] = eval("pix" add 32)。所以也就出现了只删掉最后一列方块的问题。
这是本人的理解,如有不对的地方,还请多多指教。
---------------------------------------------------------------

我这里修改了一下代码,
//initialize
nw =13;
nh = 8;
pix = new Array(nw*10+nh);
for (i=0; i<=nw; i++) {
for (j=0; j<=nh; j++) {
ij = i*10+j;
duplicateMovieClip(m1, "pix" add ij, ij);
pix[ij] = eval("pix" add ij);
pix[ij]._x = i*m1._width;
pix[ij]._y = j*m1._height;
}
}
for (i=0; i<=nw; i++) {
for (j=0; j<=nh; j++) {
ij = i*10+j;
removeMovieClip(pix[ij]);
}
}
0

评论Comments

日志分类
首页[193]
flash As[107]
有的没的[59]
数码照片[4]
自由世界[19]
blender[4]