使用FLEX和Actionscript开发FLASH 游戏-嵌入资源和增加游戏元素(第三页,共四页)
GameObject.as
package
{
import flash.display.*;
import flash.events.*;
import flash.geom.*;
/* The base class for all objects in the game */
public class GameObject
{
//object position
public var position:Point=new Point(0,0);
//higher zOrder objects are rendered on top of lower ones
public var zOrder:int=0;
//the bitmap data to display
public var graphics:GraphicsResource=null;
//true if the object is active in the game
public var inuse:Boolean=false;
public function GameObject()
{
}
public function startupGameObject(graphics:GraphicsResource,position:Point,z:int=0):void
{
if(!insue)
{
this.graphics=graphics;
this.zOrder=z;
this.position=position.clone();
this.inuse=true;
GameObjectManager.Instance.addGameObject(this);
}
}
public function shutdown():void
{
if(!inuse)
{
graphics=null;
inuse=false;
GameObjectManager.Instance.removeGameObject(this);
}
}
public function copyToBackBuffer(db:BitmapData):void
{
db.copyPixels(graphics.bitmap,graphics.bitmap.rect,position,graphics.bitmapAlpha,new Point(0,0),true);
}
public function enterFrame(dt:Number):void
{
}
}
}
这个类的目的是被继承以生成更多特定的游戏元素,例如:子弹、游戏者、敌人等等。它有4个属性。位置属性仅仅定义了GameObject在屏幕上的位置。坐标(0,0)代表一个屏幕左上角的位置,坐标(1,1)代表右下角的位置。zOrder属性定义了屏幕上物体的高度。一个有着低的zOrder的游戏对象(例如地面上的建筑物)将被画在一个有着高的zOrder的游戏对象(比如游戏者)下面。图形属性是图形资源的引用,后面再进行阐述。图形资源是要画到后台缓冲器上面的图片。最后inuse属性仅仅是对象在游戏中活跃的标志。我们将使用这个属性来允许后面的资源池的使用。
startupGameObject和shutdown两个函数起初应该看起来差不多。shutdown和startup 函数对在我们增加更多的类时将是一个共同主题。在GameObject里面他们仅仅是初始化变量,以及从GameObjectManager维护的集合里面添加或者删除游戏对象。copyToBackBuffer函数取出存储在图形属性里的图片,并把他们复制到后台缓冲器。enterFrame函数在这里是空的,这是因为游戏对象的目的是被更多特定的类继承,而且正是这些特定的类将在enterFrame函数里面增加逻辑语句。Bounce类是一个如何这样做的例子。