-
十二 11
看天地会论坛(bbs.9ria.com)举办了一个小活动,用不到30行的代码,实现一个效果。很多人都写了粒子效果,的确,粒子效果很炫,代码也不需要很多,但是,今天,我们来写一个完整的游戏,毕竟,要和用户互动才好玩嘛
首先是源代码,保存为main.as文件,关联到Fla即可运行。
package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.Timer; import flash.geom.Matrix; [SWF(width=800, height=465,backgroundColor=0xffffff, frameRate=24)] public class main extends Sprite { private var pointNum:Number=0; private var pTxt:TextField = addChild(new TextField()) as TextField; private var matrix:Matrix = new Matrix(); public function main(){ var t:Timer = new Timer(500); var tFun=function(){matrix.createGradientBox(800,465,Math.PI/2,0,0),graphics.beginGradientFill(GradientType.LINEAR,[0x00CCFF,0xFFFFFF],[0.3,1],[0,255],matrix),graphics.drawRect(0,0,800,465),t.addEventListener(TimerEvent.TIMER,function(e){var mc; var mcFun = function(){mc=addChild(new balloon(Math.random()*10 + 1)),mc.x=Math.round(Math.random()*(700-30))+30,mc.y=465}.apply(); mc.addEventListener(MouseEvent.MOUSE_DOWN, function(e){removeChild(e.target.parent),pTxt.htmlText='<font size="20" color="#ff0000">Score:'+(++pointNum).toString()+'</font>'});}),t.start()}.apply(); } } } import flash.display.Sprite; import flash.events.Event; class balloon extends Sprite{ private var speed:Number; private var s:Sprite =addChild(new Sprite()) as Sprite; public function balloon(_t){ var sFun=function(){s.graphics.lineStyle(1, 0),s.graphics.curveTo(-10, 30, 0, 60),s.graphics.beginFill(Math.random() * 0xffffff + 0xff000000),s.graphics.drawCircle(0,0,20),speed=Math.round(_t)}.apply(); s.addEventListener(Event.ENTER_FRAME,function(e){s.y-= speed;}); } }
这段代码,以}占一行,带分号;的语句占一行,咱不搞一行写N句的小聪明。
这段代码,有些地方写的不规范,比如用了匿名函数,而且对效率没做优化(对象池),但是,作为一个完整的游戏,它已经可以跑起来了,去掉import那些,核心代码也就20行。
虽然只有短短的30行代码,但是我们用到了类的知识,对象,渐变,矩阵,事件处理,匿名函数,随机运算,以及graphic绘图等,可谓麻雀虽小五脏俱全哇

- 评论(0)
发表评论 TrackBack
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。