转眼间2009年又过了六分之五,一年间里面发生很多事情。在这些事情里面,让我了解很多,失去很多也得到一些经验。在这一年期间,认识了很多好友,他们都是一群热爱flash 的好友,走在一起也算是一种缘分。
话说回头,我们都知道flash和flex的内容方向有许多,一个人再厉害精力也是有限,只能选择性去找一些方向来进行学习。曾经过去一次偶然机会,帮大学的一个同学制作个一个As2的抽奖程序,当时我什么项目经验都没有,仅仅会一点As2的编程语法,就这样答应了同学制作了一个抽奖程序,当时没有收过一分钱,当时制作出这个也非常兴奋,心情难以表达成功感。后来,我就喜欢上制作了这些抽奖程序。一口气制作手机抽奖,选号抽奖等几个小应用程序。不过,说到抽奖程序,里面涉及的东西还是很多。最近做了一个小的抽奖程序,现在把最近的笔记都记录一下。
游戏抽奖程序需求说明:
一、需求背景:
为了一项活动进行一个游戏抽奖活动,需要制作一个flash应用程序完成这一次官方的活动。
二、需求功能说明:
游戏当中,有四个礼物区,每一个礼物区里面有125份礼物(125x4=500)。在抽象过程中,随机抽选四个区,同一个区的礼物是相同的。抽奖的过程中,抽奖完一个区的时候,这个区就不可以进行抽取,直到完成了抽奖形式的时候。四个区都变成了不能继续抽取,就结束了抽奖。
注意:
为了防止礼物数被误操作,采取到礼物数更改的策略进行礼物数修正。并且可以选那个区为标记不可以再抽取。以做到更加灵活。
制作时间:9天内进行交户使用。
三、制作平台:
Flash cs3 制作
四、制作方案:
初步方案一:
随机抽取四个区,假设是分别代号为1,2,3,4 。
第一次 抽取为1的时候,这时候减去第一区的礼物数()
第二次 抽取为 2 的时候,这时候减去第二区的礼物数()
第三次 抽取为3 的时候,这时候减去第三区的礼物数()
第四次 抽取为4的时候,这时候减去第四区的礼物数()
。。。。。。。
………………..
……………………..
当第一区礼物数为0的时候,则随机抽取的数组长度变为3,同时标记1区为灰色,不可以进行抽取。
当第二个 区礼物数为 0的时候,则随机抽取数组长度变为2,同时标记2区为灰色,不可以进行抽取
四个区设计的时候,可以让用户选中和不选中两种状态,根据礼物数的设定判断该区是否纳入随机抽取的范围当中。
这个是第一方案做法比较灵活,假设错误了都可以 进行重新设定来进行礼物重新抽取。
五、程序设计
在这次程序设计当中,主要使用了三个类,第一个是礼物类,第二个是移动框类,第三个就是文档类
礼物类:Gigt.as
移动框:DrawAnimation.as
主程序: Main.as
礼物类当中:初步功能构想如下:
1.可以设置和获取礼物数,可以输出礼物数
2.可以设置和获取礼物总数(暂定)
3.可以设置礼物的代号(暂定)
4. 克隆对象
这个类里面,目的用于存储礼物数。
移动框类: 初步构想如下:
1. 移动框坐标更改
主程序类:
1.在这个主要程序类当中,我们使用时间计算器来随机抽取数组当中的号码。
2.其次我们需要进行对键盘监听,设置键盘相应的控制,如开始,抽取等一些动作。
3.同样在这个类当中,我们要处理界面的GUI里面的组件和文本。这样我们通过礼物类绑定在文本里面,当数据更改的时候,则文本也会进行相应更改。
4.处理相应的逻辑关系和动画显示过程
5.处理checkbox组件的选种和不选中两种状态
6.结合一些动画缓冲类处理一些元件的动画 效果
抽奖原理:
说到抽奖的原理,每一个人的做法都不一样,比较常见的做法是采用随机数进行选取数组的内容,当选取了就对其数据进行删除操作。这样就能够确保抽奖的时候不重复。不过为了确保原本数组不影响,在开始程序的时候,可以对原本的数组进行深度复制,Copy一份出来进行操作。这样也是一种方案。
代码清单:
礼物类Gift.as:
DrawAnimation.as 类 用于移动框使用
主程序Main.as:
六 、程序主界面
由于那个Logo 不方便发上来,只能用Ps处理一下左上角的界面图
我们主要界面是这种布局,有五个文本分别是显示礼物数的文本,一个显示客人的文本,四个checkbox组件。
七、辅助工具
在这次程序当中,利用了一些常见As3缓冲开源类,这些缓冲类能够方便实现一些flash 的缓冲动画效果。这次使用了Tweener这个缓冲效果引擎。有兴趣可以尝试一下。
八、操作方法
Space-空格键-进行选取
Enter - 回车 -进行开始
R--重置
A--设置总的礼物数
九、缺点
基本需求已经进行完,不过程序当中依然有很多缺点,如采用命名规范性,还不尽人意,面向对象设计依然还没有提升起来,重用性和维护性还没够完善,动画效果表现还没有处理完善。重置功能依然还有一些bug。
十、拓展
这个抽奖程序不是很难的东西,还有很多可以扩展的地方,目前来讲,只能慢慢提升设计水平一步步来进行对程序重构,说不定你也能做出一个更加好的抽奖程序。