+ -
当前位置:首页 → 问答吧 → 请问怎样能用数组存储影片剪辑的名字使用?

请问怎样能用数组存储影片剪辑的名字使用?

时间:2011-03-01

来源:互联网

复制内容到剪贴板
代码:
var img_array:Array = new Array ("pic_0", "pic_1", "pic_2", "pic_3", "pic_4", "pic_5", "pic_6", "pic_7", "pic_8");
trace (img_array[2]._name);
这样的 img_array数组无法用来定义pic_1影片剪辑的坐标啊。把img_array:Array 换成img_array:MovieClip又会报错。

是有别的写法么?谢谢。

作者: cchorse   发布时间: 2011-03-01

你的数组中的是字符串实例,并不是剪辑实例的引用,实符串实例是没有_name属性值的。

某个影片剪辑[img_array[2]]._name

[ 本帖最后由 hglgsxy 于 2011-3-1 18:02 编辑 ]

作者: hglgsxy   发布时间: 2011-03-01

即使是去掉引号,把 "pic_1"改成pic_1,依然不行,影片剪辑数组的正确写法是怎样的呢?

作者: cchorse   发布时间: 2011-03-01

1  去掉引号,一定行!
2  用[]来访问。

3 如果需要继续追问,请看:


提问时,只说现象不上文件,不上代码的


这是回复帖子的通稿,请查看您的帖子属性哪一种类型.
1  求助时,表达不清楚自己的问题.
2  求助时,只讲问题的现象,不讲制作思路,不提供与问题相关的情况描述。
3  求助时,不详细提供相关情况和代码,问一点,说一点,就是舍不得一次说完整。
4  求助时,表达清楚了自己的问题,也贴了代码,但是,你的代码与大量舞台上摆放的元件有关,仅看代码也不好猜,不方便测试.如果要回复你的帖子还需要根据代码去摆放和制作代码中涉及的元件.
(不要说文件太大,无法上传.你可以分卷压缩,你可以申请邮件告诉大家登陆地址,用户名,密码.你可以选择满大街都有的免费网盘.)

解决办法:
  详细描述自己的问题,尽可能让大家快速了解你的情况,提供出问题的文件(如果舍不得,请上传演示这个问题的示例文件),让大家能方便的回复你的帖子.

作者: flash023   发布时间: 2011-03-01

想实现
复制内容到剪贴板
代码:
var img_array:Array = new Array ("pic_0", "pic_1", "pic_2", "pic_3", "pic_4", "pic_5", "pic_6", "pic_7", "pic_8");
img_array[2]._alpha = 50;
这种控制效果

作者: cchorse   发布时间: 2011-03-01

如果那些影片确实存在的话,去掉引号就可以

如果要追问,请看4楼

作者: flash023   发布时间: 2011-03-01

数组内的名称不加引号可以当作影片剪辑控制,但是还是得加引号,否则无法当作名称进行attachMovie调用。
源文件贴上了,麻烦斑竹了。 控制数据内的影片剪辑.zip (5.25 KB)
控制数据内的影片剪辑.zip (5.25 KB)
下载次数: 1
2011-3-1 18:20

作者: cchorse   发布时间: 2011-03-01

this[img_array[8]]._x=200

见4楼  2

//--------------------

楼主的所有代码,可以简化成:
复制内容到剪贴板
代码:
var img_array:Array = new Array ("pic_0","pic_1", "pic_2", "pic_3", "pic_4", "pic_5", "pic_6", "pic_7", "pic_8");
img_array.sort (function(){return Math.random ()>.5});
var i:Number =img_array.length;
while(i--){
    attachMovie ("box", img_array[i], i);
}
this[img_array[8]]._x=200
[ 本帖最后由 flash023 于 2011-3-1 18:25 编辑 ]

作者: flash023   发布时间: 2011-03-01

成功了,谢谢版主,双中括号套在一起啊。
这样的话,即使数组内名称是带引号的字符串,也可以当作影片剪辑来控制了么?

作者: cchorse   发布时间: 2011-03-01

[] 叫数组访问符,可以用字符串访问某对象的子对象或者属性

楼主的代码推荐改成下面这样,更合理一些。
复制内容到剪贴板
代码:
var img_array:Array = [];
var i:Number =9;
while(i--)img_array.push (attachMovie ("box", "pic_"+i, i));
img_array.sort (function(){return Math.random ()>.5});
img_array[8]._x=200

作者: flash023   发布时间: 2011-03-01

好简练,但是完全看不懂算法了 我先按照自己能理解的来吧。

想写一个九宫格的拼图,只是刚开始随机放置图片的部分。

谢谢你。

作者: cchorse   发布时间: 2011-03-01

复制内容到剪贴板
代码:
var numArray:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var i:Number = numArray.length;
while (i--) {
    //取出格子,并按每排3个进行排列。X坐标取3的余数*宽度, Y坐标取3的倍数*高度。
    var _mc:MovieClip = attachMovie("box", "pic_"+i, i, {_x:i%3*100, _y:int(i/3)*100});
    //在数组随机删除一个数字,同时把删除掉数字的显示到格子的文本中。
    _mc.num_txt.text = numArray.splice(int(Math.random()*numArray.length), 1)[0];
}

附件

9个格子.fla (24.5 KB)

2011-3-1 18:39, 下载次数: 2

9个格子.swf (4.71 KB)

2011-3-1 18:39, 下载次数: 2

作者: flash023   发布时间: 2011-03-01