AS3基础教程-第23课-点名小程序(下)

2024-10-15 01:14:38

1、我们打开23.fla文件,直接修改代码。

2、分析:只需将已经选出的人名,从数组内剔除,后续 从数组内随机抽取人名时,就不可能抽到被剔除的人名了。每剔除一个人名(即:删除掉数组内的某一个元素),数组的长度就会 减一,换言之,随着按钮的单击,数组的长度会一直减小,最终变为0,此时数组内的元素都已经被删除了

3、按照上面的分析,要删除数组内的特定索引处的元素,只能使用数组的splice()方法。关于本方法的详述,请打开本系列教程的第18课自行复习,这里不再详述之。代码超级简单,仅需在names_txt.text=renming[suoyin]的后面,添加下面的一行代码即可:renming.splice(suoyin,1)如此一来,随机抽取的人名一定不会重复!

4、实测时,发现,当所有的人名都被剔除之后,再单击按钮,会在“输出”面板内出现下面的提示:TypeError: Error #2007: 参数 text 不能为空。 at flash.text::TextField/set text() at _23_fla::MainTimeline/fl_MouseClickHandler()原因是,当数组的长度为0时,就无法再从数组内剔除元素了。故此,为了让我们的程序最完美,最好加上一个if判断语句,当长度为0时,不再执行剔除元素的操作。那么,仅需将我们在步骤3内新增的那行代码的基础上,加上一个if判断即可,将其修改为下面的样子:if (renming.length > 0) { names_txt.text = renming[suoyin];//注意这行代码也要放入if内,否则仍会出现提示 renming.splice(suoyin,1); } else { names_txt.text = "已全部点完"; }

5、本课的完整代码如下:var renming:Array = ["乔振宇","宋茜","刘诗诗",&qu泠贾高框ot;赵丽颖","迪丽热巴"];renming.push("张艺兴","胡歌","吴磊","杨幂","林更新","杨洋","杨紫","陈学冬");renming.push("范冰冰","刘涛","吴奇隆","陈赫","李晨","张翰","柳岩","高圆圆");var suoyin:uint;click_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);function fl_MouseClickHandler(event:MouseEvent):void{ suoyin = Math.random() * renming.length; if (renming.length > 0) { names_txt.text = renming[suoyin];//注意这行代码也要放入if内,否则仍会出现提示 renming.splice(suoyin,1); } else { names_txt.text = "已全部点完"; }}

猜你喜欢