使用FLEX和Actionscript开发FLASH 游戏-位图动画(第一页)
在第六部分我们增加了碰撞检测。在第七部分我们将增加动画来允许我们包含一些好的爆炸效果。
在第六部分我们介绍了碰撞检测,它让我们能击毁屏幕上的敌机。但是敌机只是消失了,这个效果有点令人不满意。在这篇论文中我们将增加动画,这让我们增加了一些漂亮的爆炸效果。
如果Flash有个著名的地方,那它就是动画。Flex确实允许你使用同样的基于动画的矢量图,这是Flash著名之处,然而对于我们的游戏我们将使用基于动画的历史相当悠久的帧。这么做有两个原因。第一是基于动画的帧更容易实现,更加适合我们做的游戏的风格。第二个是我不是一个美术家,不得不用我能在网络中找到的免费的材料,这里我找到了基于帧的材料。
上面的图像说明了我所说的基于动画的帧的含义。这是一连串的帧,按照顺序来演示,以生成一个动画。你还在学校时在你的教科书的页角画过一些小的动画么?那是相同的概念。
要实现动画我们首先需要给GraphicsResource类一些改变。现在让我们看看。
GraphicsResource.as
package
{
import flash.display.*;
public class GraphicsResource
{
public var bitmap:BitmapData=null;
public var bitmapAlpha:BitmapData=null;
public var frames:int=1;
public var fps:Number=0;
public function GraphicsResource(image:DisplayObject,frames:int=0,fps:Number=0)
{
bitmap=createBitmapData(image);
bitmapAlpha=createAplhaBitmapData(image);
this.frames=frames;
this.fps=fps;
}
protected function createBitmapData(image:DisplayObject):BitmapData
{
var bitmap:BitmapData=new BitmapData(image.width,image.height);
bitmap.draw(image);
return bitmap;
}
protected function createAlphaBitmapData(image:DisplayObject):BitmapData
{
var bitmap:BitmapData=new BitmapData(image.width,image.height);
bitmap.draw(image,null,null,flash.display.BlendMode.ALPHA);
return bitmap;
}
}
}
这里做的改变相当简单。我们增加了两个属性:frames和fps。Frames属性是在GraphicsResource中保存的动画图像有多少帧的一个数目。使用上面得一个爆炸的例子,frames应该被设置为7。Fps属性定义了动画在每秒中显示的帧数。
GameObject类不知道动画。如果你使用上面的图像来初始化一个GameObject,整个图像将被显示在屏幕上,而不是一个动画序列。为了产生动画我们需要生成一个新的类:AnimatedGameObject。现在让我们看看它的代码。
<Previous Article in Series | page: 1 2 3 4 | Next Page>