FLEX和Actionscript开发FLASH游戏5-1

本文介绍如何使用FLEX和Actionscript为Flash游戏添加敌机和玩家武器。通过GameObjectManager和GameObject类简化游戏元素的绘制与更新,Level类负责生成新元素。文章展示了Level类的代码实现,包括增加敌机和云朵的具体方法。
FLEX和Actionscript开发FLASH游戏5-1
2010年11月12日
  使用FLEX和Actionscript开发FLASH 游戏-增加武器
  本系列到现在已经实现了足够的底层代码使得为游戏增加新的元素非常的容易。通过使用GameObjectManager和GameObject类处理绘制和更新游戏元素的工作以及用Level类实际生成新的元素,实现新的游戏元素就仅仅只需要很少量的代码了。我们将利用这个来给游戏增加一些敌机,并且给游戏者增加战斗用的武器。
  首先,让我们看看在Level类中做的一些改变。
  Level.as
  package
  {
  import flash.events.*;
  import flash.geom.*;
  import flash.media.*;
  import flash.net.*;
  import flash.utils.*;
  import mx.collections.ArrayCollection;
  import mx.core.*;
  public class Level
  {
  protected static var instance:Level=null;
  protected static const TimeBetweenLevelElements:Number=2;
  protected static const TimeBetweenEnemies:Number=3;
  protected static const TimeBetweenClouds:Number=2.5;
  protected var timeToNextLevelElement:Number=0;
  protected var levelElementGraphics:ArrayCollection=new ArrayCollection();
  protected var timeToNextEnemy:Number=0;
  protected var enemyElementGraphics:ArrayCollection=new ArrayCollection();
  protected var timeToNextCloud:Number=0;
  static public function get Instance():Level
  {
  if(instance==null)
  instance=new Level();
  return instance;
  }
  public function Level(caller:Function=null)
  {
  if(Level.instance!=null)
  throw new Error("Only one Singleton instance should be instantiated");
  levelElementGraphics.addItem(ResourceManager.Small IslandGraphics);
  levelElementGraphics.addItem(ResourceManager.BigIs landGraphics);
  levelElementGraphics.addItem(ResourceManager.Volca noIslandGraphics);
  enemyElementGraphics.addItem(ResourceManager.Small BluePlaneGraphics);
  enemyElementGraphics.addItem(ResourceManager.Small GreenPlaneGraphics);
  enemyElementGraphics.addItem(ResourceManager.Small WhitePlaneGraphics);
  }
  public function startup():void
  {
  timeToNextLevelElement=0;
  new Player().startupPlayer();
  }
  public function shutdown():void
  {
  }
  public function enterFrame(dt:Number):void
  {
  //add a background element
  timeToNextLevelElement-=dt;
  if(timeToNextLevelElement<=0)
  {
  timeToNextLevelElement=TimeBetweenLevelElements;
  var graphics:GraphicsResource=levelElementGraphics.get ItemAt (MathUtils.randomInteger(0,levelElementGraphics.le ngth)) as GraphicsResource;
  var backgroundLevelElement:BackgroundLevelElement=
  BackgroundLevelElement.pool.ItemFromPool as BackgroundLevelElement
  backgroundLevelElement.startupBackgroundLevelEleme nt(graphics,new Point (Math.random()*Application.applilcation.width, -ZOrders.BackgroundZOrder,50); } //add an enemy timeToNextEnemy-=dt; if(timeToNextEnemy<=0) { timeToNextEnemy=TimeBetweenEnemies; var enemygraphics:GraphicsResource=enemyElementGraphic s.getItemAt (MathUtils.randomInteger(0,enemyElementGraphics.le ngth))as GrahpicsResource; var enemy:Enemy=Enemy.pool.ItemFromPool as Enemy; enemy.startupBasicEnemy( new Point(Math.random()*Application.application.width, - enemygraphics.bitmap.height),55); } //add cloud timeToNextCloud-=dt; if(timeToNextCloud<=dt) { timeToNextCloud=TimeBetweenClouds; var cloudBackgroundLevelElement:BackgroundLevelElement = BackgroundLevelElement.pool.ItemFromPool as BackgroundLevelElement; cloudBackgroundLevelElement.startupBackgroundLevel Element( ResourceManager.CloudGraphics,new Point(Math.random() *Application.application.width,- ResourceManager.CloudGraphics.bitmap.height),ZOrde rs.CloudsBelowZOrder,75); } } } } timeToNextEnemy/TimeBetweenEnemies 和timeToNextCloud/TimeBetweenClouds属性对和timeToNextLevelElement/TimeBetweenLevelElements 属性对(在第四部分详细描述的)是一样的作用,除了它们是各自用来增加敌机和云朵。enemyElementGraphics属性同levelElementGraphics(也在第四部分详细描述过)是一样的作用,除了这里它用来提供生成敌机的图像资源。
  我们还在enterFrame函数里增加了两个新的代码块来生成敌机和云朵。这些代码几乎和生成BackgroundLevelElement的代码块完全一样。
  云朵是作为一个BackgroundLevelElement来实现的,除了使用了稍快些的滚动速度和更高级别的zOrder。这让它们看起来处在更高的海拔高度。
提供了一个基于51单片机的RFID门禁系统的完整资源文件,包括PCB图、原理图、论文以及源程序。该系统设计由单片机、RFID-RC522频射卡模块、LCD显示、灯控电路、蜂鸣器报警电路、存储模块按键组成。系统支持通过密码刷卡两种方式进行门禁控制,灯亮表示开门成功,蜂鸣器响表示开门失败。 资源内容 PCB图:包含系统的PCB设计图,方便用户进行硬件电路的制作调试。 原理图:详细展示了系统的电路连接模块布局,帮助用户理解系统的工作原理。 论文:提供了系统的详细设计思路、实现方法以及测试结果,适合学习研究使用。 源程序:包含系统的全部源代码,用户可以根据需要进行修改优化。 系统功能 刷卡开门:用户可以通过刷RFID卡进行门禁控制,系统会自动识别卡片并判断是否允许开门。 密码开门:用户可以通过输入预设密码进行门禁控制,系统会验证密码的正确性。 状态显示:系统通过LCD显示屏显示当前状态,如刷卡成功、密码错误等。 灯光提示:灯亮表示开门成功,灯灭表示开门失败或未操作。 蜂鸣器报警:当刷卡或密码输入错误时,蜂鸣器会发出报警声,提示用户操作失败。 适用人群 电子工程、自动化等相关专业的学生研究人员。 对单片机RFID技术感兴趣的爱好者。 需要开发类似门禁系统的工程师开发者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值