免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

标题: [AS3技巧集] AS3技巧集:6.给舞台上的N个按钮,批量添加鼠标单击操作 [打印本页]

作者: 网雨霏霏    时间: 2019-3-17 22:20     标题: AS3技巧集:6.给舞台上的N个按钮,批量添加鼠标单击操作

【问题描述】:
舞台上已经放置好了数个按钮,单击它们的时候实现类似的效果,如果每一个都单独的书写,太麻烦了,是否有简易方法呢。

【解决方案】:
该问题在AS3内超级容易解决,不过,按钮的实例名必须非常有规律,必须设置为“字母+数字”的形式,字母都一样,数字从0或1开始,每次增加1个单位。形如下面的命名:
btn1 btn2 btn3 btn4 btn5 btn6 btn7


下面给出具体问题:
舞台上有10个按钮,分别设置了实例名,btn1到btn10
舞台上还有两个动态文本,实例名为xianshi1与xianshi2
xianshi1用于显示当前单击的按钮的数字【属性面板内使用了“嵌入”数字的方式以消除锯齿】,
xianshi2用于显示汉字【属性面板内不消除锯齿,因为“嵌入”了所有汉字的话,会导致swf体积超大】

[attach]1372[/attach]

代码如下:
  1. var shuzu:Array=new Array(10)
  2. shuzu[0]="君生我未生";
  3. shuzu[1]="我生君已老";
  4. shuzu[2]="君恨我生迟";
  5. shuzu[3]="我恨君生早";
  6. shuzu[4]="恨不生同时";
  7. shuzu[5]="日日与君好";
  8. shuzu[6]="我离君天涯";
  9. shuzu[7]="君隔我海角";
  10. shuzu[8]="化蝶去寻花";
  11. shuzu[9]="夜夜栖芳草";
  12. for(var i:uint=1;i<=10;i++){
  13. this["btn"+i].addEventListener(MouseEvent.CLICK,dj);
  14. function dj(e:MouseEvent){
  15. xianshi.text=""+e.target.name.substr(3);
  16. xianshi2.text=""+shuzu[uint(e.target.name.substr(3))-1];
  17. }
  18. }
复制
代码解释:
看截图中代码所在的行号:
1:定义一个数组,用于存储汉字的,该数组内共有10个元素,分别对应10个按钮单击后的输出
2-11:设置10个元素的值,注意要用双引号括起来
12-18:批量代码
13:利用this[实例名]的手段,可以访问到舞台上的对象
15:在14行内有一个名为e的参数,在15行内通过e.target.name即可访问到当前被单击对象的实例名,e.target.name是String字符串类型的,调用它的substr(n)方法,可以截取从第n个字符开始到最后的所有字符串,截取后的类型是字符串类型的
16.uint(e.target.name.substr(3))是将提取出来的字符串转换为uint数据类型,用于数组的索引的
索引值是从0开始的,而我们给按钮设置的实例名是从1开始的,故这里需要-1


源文件下载【flashCS6格式】:
本帖隐藏的内容需要回复才可以浏览

作者: 网雨霏霏    时间: 2019-3-17 22:21

如果:
按钮的实例名都是用英文或者汉语拼音,其实也可以实现。
改天我整理出来吧





欢迎光临 flash之路-flash技术交流 (http://flashroad.joinbbs.net/) Powered by Discuz! 7.2