flash 游戏 算24点,扫雷开发备忘。
前一阵子,开发了个24点游戏的,用的as3.0 。 开发前对flash和as3.0并不是很了解,简单的语法是知道的。 flash里面因为可以做movieclip,创建动画对象真是很方便。其他语言中的自定义控件,在as3中几乎是原生功能。 支持类,支持多个文件的代码组织,简单项目用起来还是很方便的。 是否有解,用了个递归算法,感觉效率还是挺高的。 表达式计算走了捷径,调用了eval。合法性检测,直接加了点代码。 试玩地址: 算24点 http://85xt.cn/vod_play.aspx?indexid=0&_id=1448 ?扫雷 http://85xt.cn/vod_play.aspx?indexid=0&_id=2261 下面做一个扫雷程序。 用mc作为基本元件,用数组保存生成的mc对象。banding对象的事件,大致代码如下。 for(var i:int=0;i<rows;i++) ? mc有12帧,表示有n课雷等12种状态。 点击的时候判断这个mc附近有几个类。 flash么有右键,所以,单击为标记,双击为打开。没有问号状态。 双击打开,要支持智能判断,就是如果是0颗雷,则把这一大片都打开。 flash本身不支持双击。不过简单的代码就可以解决这个问题,具体google下。 比较难得是如果点到空白处要把周围的8个都打开,并且如果碰到空白的还要打开。这里考虑了下,用递归来做。 当感觉有时候会卡一下,然后没有右键真的很麻烦。 ? 发现gotoandplay代码的效率很低。有条复位语句和自动打开空白的递归很慢,发现都是gotoandstop造成的。trace了下,基本每个mc占40ms。 似乎bitmapdate可以解决这个问题。 mc中的每帧改成位图,速度有20%左右的提高。 如果把mc中的12帧删除掉,剩下一帧,速度就很快了。 gotoandstop用draw来做。 有个flash游戏优化技巧的文档,不错的。 ? 现在的思路是在mc里放一个bitmap。然后根据情况画这个bitmap。 如何访问mc中的子元件呢? ?最后的方法是生成bitmap,然后在一个空的mc里,addchild。 图像原件不是位图,好像不能在as3中使用。外部导入的bmp文件,倒是可以导出到as3种使用。 加载库中的位图对象的代码如下 var bb1:Bitmap; ?mc.addChild(bb1);??? 这个速度很快。帧多的话判断比较多,写成一个函数,用起来也很方便。 另外stage对象无法在主函数获取到,相关解释查google。 我因为想获得一个全屏幕响应的键盘事件而已,所以在第一帧中调用stage就可以了。 然后碰到的问题是改变鼠标形状的问题。 只能通过mc跟随鼠标来解决。 as3的编译器还不够强大,错误提示很不爽。 剩下的就是程序逻辑了。 2个程序基本都是300行左右的代码,写小程序真是比做大项目有意思。不用考虑复杂的需求。。 ? 2012-5-26今天开始想做俄罗斯方块 第一个问题就是不规则形状的碰撞检测,规则形状可以通过distance来判断,不规则形状就难多了。 google下,as3有自带方法,bitmapdata,有hittest方法。所以用两个bitmapdata就可以了。 每个block是一个bitmap,然后背景是一个bitmap。 检测到碰撞,则停止移动。并且把对于的内容复制到背景。 动手了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |