沐枫小筑
script c c++ c++/cli c#
.net windows ria game and so ...
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 56 文章- 1 评论- 404
用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
沐枫
阅读(3516)
评论(3)
编辑
收藏
网摘
所属分类:
Other#
发表评论
1448882
回复
引用
查看
#1楼
2006-10-09 13:09 |
euclid
flash这么帅~
回复
引用
查看
#2楼
[
楼主
]2006-10-12 14:42 |
沐枫
可惜的是linux下的flash9需要等明年。
回复
引用
#3楼
2009-02-11 23:08 |
hi[未注册用户]
不看好
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
503412
链接:
切换模板
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
竞争日趋激烈 微软欲借 Windows 7 扭转战局
上海电信计划2012年80%用户实现100M带宽
数万名网友签名抗议星际争霸2取消局域网功能
Silverlight打造杰克逊纪念专题
传诺基亚正在开发Android手机
相关链接:
公告
沐枫小筑 主力博客
沐枫小筑 C++博客
与我联系
发短消息
搜索
留言簿
给我留言
查看留言
我参与的团队
福州.NET俱乐部(0/0)
我的标签
DynamicControl(8)
ASP.NET(1)
C#(1)
ASP.NET 3.5 SP1(1)
随笔分类
(55)
.NET(13)
(rss)
C++(21)
(rss)
Flex(3)
(rss)
Other#(5)
(rss)
Tip#(7)
(rss)
乱弹(6)
(rss)
随笔档案
(54)
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)
收藏夹
(32)
.NET(32)
(rss)
推荐链接
c++
Dflying Chen
(rss)
Dreamer's Blog
(rss)
Macromedia 技术
沐枫小筑
中国地方游戏网
我的Blog
C++ 沐枫小筑
(rss)
沐枫@blogchina.com
(rss)
沐枫@blogcn.com
(rss)
沐枫@csdn.net
(rss)
沐枫@teeta.com
(rss)
积分与排名
积分 - 194348
排名 - 243
最新评论
1. re: 您也使用托管C++吗?
不是为什么维护以前的C++代码,而是C#有些实现不了的功能用C++写,但C#又想实现,却来个变态的互操作 (ZKO)
2. re: C++指针探讨 (四) 函数对象
思路很清晰,例子很明了。不错!不错! (帘卷西风1985)
3. re: X-GL 超越Vista的界面效果
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
4. re: DynamicControl/DynamicField 例外的解决
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
5. re: .net winform 的 OnKeyDown 与 方向键
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
阅读排行榜
1. Lua脚本语法说明(修订)(18104)
2. C++ 程序文档生成器介绍(doxygen)(15899)
3. C++指针探讨 (三) 成员函数指针 (10388)
4. C++指针探讨 (二) 函数指针(9972)
5. C++指针探讨 (一)数据指针(9347)
6. 如何使用.NET配置文件(一)(7861)
7. 您也使用托管C++吗?(7073)
8. 介绍LuaPlus: 好用的Lua For C++扩展(修订)(6813)
9. int 与 byte[] 的相互转换(5879)
10. Flex与.NET WebService(5860)