flash as3 打气球小游戏代码

作者:袖梨 2022-06-28

效果如下

首先是源代码,保存为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='Score:'+(++pointNum).toString()+''});}),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绘图等,可谓麻雀虽小五脏俱全哇

 

相关文章

精彩推荐