在AS3中使用简单的hitTest多级游戏有什么好的程序结构?

时间:2014-04-11 17:15:15

标签: actionscript-3 flash

我已经制作了一个25级简单的hitTest游戏(机制类似于飞扬的小鸟,当你按住鼠标按钮时,英雄上升,如果你没有拿着它,他就会下降,目标是来到屏幕的右侧)我认为我使用了非常糟糕的代码。我为所有25个级别创建了一个图层和一个框架,并且在框架中我有一个 onEnterFrame 函数,其中有25个

if(currentFrame==x){
do something
}

因为在某些级别我有一些具有某些实例名称的对象,而这些对象在其他级别上没有,如果我没有在其他级别上拥有它们,那么它们会在如果函数我得到语法错误(找不到null对象,我认为它的错误#1009)而且我的游戏在AIR for android上也非常滞后。在AS2中,我让这个游戏变得更好,但是AS3差别很大,我不能使用相同的策略&#39;制作游戏。我很感激,如果有人能帮助我并告诉我我的代码应该是什么样的,就像我应该以某种方式避免某些实例名称缺少对象的语法错误,或者我应该以某种方式在每个框架中编写代码...谢谢前进!<​​/ p>

2 个答案:

答案 0 :(得分:1)

Luka,一种可以避免该问题的简单方法是在执行代码之前简单地检查对象是否存在。

if(mc && /*other conditions*/){
//execute code
}

当谈到以一种草率的方式将游戏放在一起时,我感到很痛苦。几年前,我整理了一个分布在大约25个闪存文件中的AS2游戏!我当时缺乏经验和无知,认识到计划不是最有效的。

答案 1 :(得分:1)

AS3是一种面向对象的编程语言,而AS2基本上只是一种脚本语言,它们不太相似......你最好不要使用与AS2相同的策略,因为它们是如此不同,以至于它会失败。尝试使用类,数组/向量。例如,创建一个Wall类并将实例放在一个数组或一个向量中,然后循环遍历数组/向量并搜索冲突,如果你删除一个墙,然后从该数组/列表中删除它。