沐枫小筑
script c c++ c++/cli c#
.net windows ria game and so ...
博客园
首页
博问
闪存
新随笔
联系
订阅
管理
随笔-58 文章-1 评论-426
用Flex2开发2D游戏(先试试2D性能)
Flash开发的游戏多了。但都是一些小游戏,特别是屏幕小的游戏。据说Flash9的引擎重新设计,效率比以前大有提高。再加上Flex2/AS3非常适合程序员的IDE和开发语言,同时还支持二进制的TCP通讯,我觉得,Flex2/Flash9应该可以替代2D的游戏客户端开发工具和引擎了。
在实际使用之前,还是需要测试一下图形引擎的效率吧。当然,也同时体验一下开发效率。
设计一个最简单的场景:在一个背景上,有许多的UFO在飞,这些UFO都与背景进行某种层度的Alpha混合。测试画面如下:
程序结构很简单:
其中,Sprite、BitmapAsset、MovieClipAsset是ActionScript3所提供的基类。我们需要编写的是ExUfo和UfoSprite这两个Sprite。至于BackClass和UfoClass则是背景图片和飞碟动画的实体类,只需要在程序中定义就可以使用了。
ExUfo类:
package
{
import flash.display.
*
;
import flash.events.
*
;
import mx.core.BitmapAsset;
import flash.text.TextField;
import flash.utils.getTimer;
public
class
exUfo extends Sprite
{
//
定义嵌入图片类
[Embed(source
=
"
desk34.JPG
"
)]
private
var BackClass:Class;
//
tCount用于显示Sprite的个数,tFrameRate用于显示帧率
private
var tCount:TextField, tFrameRate:TextField;
public
function exUfo()
{
//
构造背景图片
var bak:BitmapAsset
=
new
BackClass()
as
BitmapAsset;
addChild(bak);
//
创建两个TextField用于显示Sprite个数和帧率
tCount
=
new
TextField();
tCount.x
=
20
;
tCount.y
=
20
;
tFrameRate
=
new
TextField();
tFrameRate.x
=
120
;
tFrameRate.y
=
20
;
addChild(tCount);
addChild(tFrameRate);
//
添加鼠标事件(用于生成新的UFO)
parent.addEventListener(MouseEvent.MOUSE_UP, clickHandler);
//
添加帧开始事件(用于统计帧率)
parent.addEventListener(flash.events.Event.ENTER_FRAME, enterFrame);
}
//
当鼠标按钮松开时,增加一个UFO
public
function clickHandler(e:MouseEvent):
void
{
var t:UfoSprite
=
new
UfoSprite();
t.x
=
e.stageX;
t.y
=
e.stageY;
t.alpha
=
Math.max(
0.2
, Math.random());
addChild(t);
}
private
var old:Number
=
0
, framecount:Number
=
0
;
//
统计并显示Sprite个数和帧率
public
function enterFrame(e:Event):
void
{
tCount.text
=
"
Sprites:
"
+
String(
this
.numChildren);
framecount
++
;
if
(old
==
0
)
{
old
=
getTimer();
return
;
}
var temp:Number
=
getTimer();
var ms:Number
=
temp
-
old;
if
(ms
>
1000
)
{
var rate:Number
=
framecount
*
1000
/
ms;
old
=
temp;
framecount
=
0
;
tFrameRate.text
=
"
FPS:
"
+
String(rate).substring(
0
,
7
);
}
}
}
}
UfoSprite类:
package
{
import flash.display.Sprite;
import mx.core.MovieClipAsset;
import flash.utils.
*
;
public
class
UfoSprite extends Sprite
{
//
定义内嵌的ufo动画类
[Embed(source
=
"
ufo.swf
"
)]
private
var UfoClass: Class;
public
function UfoSprite()
{
//
创建ufo动画
var ufo:MovieClipAsset
=
new
UfoClass()
as
MovieClipAsset;
addChild(ufo);
//
设置定时事件
setInterval(timerHandler,
1000
/
30
);
}
private
var d:Number
=
5
, dx:Number
=
d, dy:Number
=
d;
//
定时让ufo飞行
public
function timerHandler():
void
{
var pw:Number
=
parent.getChildAt(
0
).width;
var ph:Number
=
parent.getChildAt(
0
).height;
x
+=
dx; y
+=
dy;
if
(x
<=
0
) dx
=
d;
if
(x
>=
pw
-
width) dx
=
-
d;
if
(y
<=
0
) dy
=
d;
if
(y
>=
ph
-
height) dy
=
-
d;
}
}
}
编译
如果使用Flex2 SDK,则在Flex2SDK的命令行提示中打入:
D:\test\exUfo>
mxmlc -use-network=true -default-size 800 600 -default-frame-rate30 exUfo.as
执行结果为:
Loading configuration file C:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\flex-config.xml
D:\test\exUfo\exUfo.swf (84431 bytes)
如果使用Flex2 Builder,应创建ActionScriptProject,然后创建ActionScriptFile(也就是*.as文件),然后需在编译器的选项中加入“
-default-size 800 600 -default-frame-rate30
”,目的是为了让生成的swf文件,按照800*600的尺寸,帧率以30fps为基准。
源代码包含完整的Flex Builder 2项目,可以直接在Flex Builder 2打开。
示例(
安装Flash9浏览器插件
):点鼠标左键一次,增加一个飞碟。
示例文件下载:
http://images.cnblogs.com/cnblogs_com/ly4cn/exUfo.swf
完整的代码下载:
http://files.cnblogs.com/ly4cn/exUfo.rar
Flex2 SDK 和 Flex2 Builder 试用版下载:
http://www.adobe.com/cn/products/flex/?promoid=BINV
Flex2 Builder包含了Flex2 SDK,以及一个Flash9的独立播放器。
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted @ 2006-09-13 20:36
沐枫
阅读(4480)
评论(3)
编辑
收藏
发表评论
1448882
回复
引用
查看
#1楼
2006-10-09 13:09
euclid
flash这么帅~
回复
引用
查看
#2楼
[
楼主
]
2006-10-12 14:42
沐枫
可惜的是linux下的flash9需要等明年。
回复
引用
#3楼
2009-02-11 23:08
hi[未注册用户]
不看好
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
Chrome将给老机带来更快的3D绘图性能
·
在线支付创业公司Stripe获红杉资本等1800万美元的投资,公司估值达1亿美元
·
创新工场孵化公司磊友科技今天正式推出首款大型手机HTML5网页游戏《黎明帝国》
·
霍金的伟大与不幸
·
Linux为什么成功?因为它的失败是免费的!
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
沐枫小筑 主力博客
沐枫小筑 C++博客
昵称:
沐枫
园龄:
6年5个月
粉丝:
12
关注:
0
搜索
我的标签
DynamicControl
(8)
ASP.NET
(3)
C#
(3)
ASP.NET 3.5 SP1
(1)
Mvc
(1)
git svn
(1)
随笔分类
(58)
.NET(15)
(rss)
C++(21)
(rss)
Flex(3)
(rss)
Other#(5)
(rss)
Tip#(7)
(rss)
乱弹(7)
(rss)
随笔档案
(58)
2011年7月 (1)
2010年7月 (1)
2009年11月 (2)
2009年1月 (1)
2008年8月 (2)
2008年4月 (1)
2007年12月 (1)
2007年11月 (1)
2007年10月 (2)
2007年9月 (4)
2007年8月 (2)
2007年7月 (1)
2007年5月 (2)
2006年9月 (3)
2006年8月 (5)
2006年7月 (1)
2006年6月 (6)
2006年5月 (1)
2006年4月 (3)
2006年3月 (4)
2006年1月 (1)
2005年12月 (1)
2005年11月 (7)
2005年9月 (5)
推荐链接
c++
Dflying Chen
(rss)
Dreamer's Blog
(rss)
Macromedia 技术
沐枫小筑
中国地方游戏网
我的Blog
C++ 沐枫小筑
(rss)
沐枫@blogchina.com
(rss)
沐枫@blogcn.com
(rss)
沐枫@csdn.net
(rss)
沐枫@teeta.com
(rss)
积分与排名
积分 - 260364
排名 - 286
最新评论
阅读排行榜
推荐排行榜