FLEX和Actionscript开发FLASH游戏5-2

本文介绍了使用FLEX和Actionscript开发Flash游戏的过程,包括敌机和武器类的设计与实现。通过简单的代码改动,实现了游戏中的敌机生成及玩家武器使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FLEX和Actionscript开发FLASH游戏5-2
2010年11月12日
  一个新的类,敌机,被生成来代表敌人。现在让我们看看代码。
  Enemy.as package { import flash.geom.Point; import mx.core.*; public class Enemy extends GameObject { static public var pool:ResourcePool=new ResourcePool(NewEnemy); protected var logic:Function=null; protected var speed:Number=0; static public function NewEnemy():Enemy { return new Enemy(); } public function Enemy() { super(); } public function startupBasicEnemy(graphics:GraphicsResource,positi on:Point,speed:Number):void { super.startupGameObject(graphics,position,ZOrders. PlayerZOrder); logic=basicEnemyLogic; this.speed=speed; } override public function shutdown():void { super.shutdown(); logic=null; } override public function enterFrame(dt:Number):void { if(logic!=null) logic(dt); } protected function basicEnemyLogic(dt:Number):void { if(position.y>Application.application.height+graphi cs.bitmap.height) this.shutdown(); position.y+=speed*dt; } } } 通过这些简单的改变我们现在可以在游戏中以一定的时间间隔生成敌机。下一步将生成游戏者能够用来使用的武器。这么做我们需要生成武器类。让我们看看它的代码。
  Weapon.as
  package
  {
  import flash.geom.*;
  public class Weapon extends GameObject
  {
  static public var pool:ResourcePool=new ResourcePool(NewWeapon);
  protected var logic:Function=null
  protected var speed:Number=0;
  static public function NewWeapon():Weapon
  {
  return new Weapon();
  }
  public function Weapon()
  {
  super();
  }
  public function startupBasicWeapon(graphics:GraphicsResource,posit ion:Point,speed:Number):void
  {
  super.startupGameObject(graphics,position,ZOrders. PlayerZOrder);
  logic=basicWeaponLogic;
  this.speed=speed;
  }
  override public function shutdown():void
  {
  super.shutdown();
  logic=null;
  }
  override public function enterFrame(dt:Number):void
  {
  if(logic!=null)
  logic(dt);
  }
  protected function basicWeaponLogic(dt:Number):void
  {
  if(position.yApplication.application.width-graphic s.bitmap.width) position.x=Application.application.width-graphics. bitmap.width; if(position.yApplication.application.height-graphi cs.bitmap.height) position.y=Application.application.height-graphics .bitmap.height; } override public function mouseDown(event:MouseEvent):void { shooting=true; } override public function mouseUp(event:MouseEvent):void { shooting=false; } } } 我们已经增加了shooting属性。当被设置为真时(在mouseDown函数里,此函数在鼠标左键被按下时调用)游戏者周期性地增加生成新的武器类实例。mouseUp(当鼠标按钮被释放时调用)将设置shooting 为假,而且Player停止生成新的武器。timeToNextShot/TimeBetweenShots属性对被用来生成新的武器对象。
  通过生成这两个新的类(武器和敌机),在Level和Player类中增加了一些小小的改变我们几乎到此时有了一个可以玩的游戏了。你将发现实际上你还不能向敌人射击。那需要我们在第六部分增加一些东西:冲突检测。
  在http://flexfighters.sourceforge.net/flexfighters5. html处可查看最终效果,从https://sourceforge.net/project/showfiles.php?grou p_id=241490&package_id=293860&release_id=632324处可下载资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值