最近在学习使用flash来实现webgame,看了看《ActionScript 3.0 Game Programming University 2nd Edition》。把一些有用的点记录下来,以后好查。

  当你要编写Flash游戏时,有许多东西需要考虑。有时一些容易被遗忘的关键点可能导致游戏无法正确运行。为了帮助你避免这些简单的问题,以下列出一些参考清单。

  • 发布和文档设置

    发布设置和MC设置十分容易被遗忘。

  • Document类设置是否正确?

    忘记设置这个可能导致movie运行时会直接忽略你所创建的类。

  • 发布设置是否正确?

    确保你的发布设置中将Flash movie是基于Flash 10和ActionScript 3.0 。

  • 检查安全设置

    在Flash发布设置中,有一个本地回放安全性(Local Playback Security setting)。它是用于设置是采用仅访问本地文件或者是仅访问网络文件。为例保证Flash movies的安全,你需要选择其中一个。

    如果你有本地文件需要访问然而却设置为仅访问网络文件的话就会出现问题。当你使用的是外部文件(external files)并将文件上传到服务器后发现程序并不是像预想的一样,这时你可以首先检查这个选项。

  • 注意大小写敏感

    当你命名变量或者函数时,注意是大小写敏感的。所以像myVariable和myvariable是完全两个不一样的变量。同样的对于类的命名也是一样。

  • Movie Clip类文件(Are Movie Clip Class Files Present?)

    如果一个Movie Clip提供一个Actionscript可以调用的名字,那么他就可以通过缺省动态类或者你自己创建一个类来调用它。例如,你可以制作一个叫做EnemyCharacter的mc并且有一个EnemyCharater.as的类文件与之相对应。

    然而,这些类容易被忘记或者错误命名。例如Enemycharater.as(小写的c)文件就会被忽略或者是没有连接到EnemyCharater的mc上。

  • 类是否扩展了正确的类型?

    你可能编写了一个movie类的定义如下:

    public class myClass extends Sprite {

    然而,通过对Sprite而不是MovieClip的扩展,你将只能在movie中使用一帧。指向其他帧的代码将无法使用。

  • 构造函数名字是否正确?

    如果你有一个叫做myClass的类,那么它的构造函数的名字就应该为myClass;否则它将无法在类的初始化时运行。但是,如果你并不想让函数立刻执行,可以通过命名为startMyClass并在开始帧之后调用它。

  • 运行问题

    有一些问题再编译时不会报错,也不会每次一开始都出现。但是它们可能会再开发过程中出现并且很难被跟踪到。

  • 你是否在对象准备好之前进行属性设置?

    例如,当你想要跳转到movie或者一个movie clip中的一个新的帧,并且尝试去设置或访问那里的一个对象的属性时将会产生问题。因为该帧和它的对象都还没有初始化,所以相应的属性也是不存在的。

  • 你是否销毁对象?

    虽然这样做可能会产生许多问题,但是这是一个很好的做法。就是在你使用完对象以后记得去销毁它们。例如,如果你编写的游戏可以让玩家在屏幕上打子弹,他们可能会一直按着按键并且射出很多发子弹。但这些子弹离开屏幕的可视区域后,你肯定不想让它们还存储在内存中并管理。

    为了完成删除这些对象,你需要将所有预期相关的变量或数组中取出对其的引用,以及使用removeChild从显示列表中删除它。

  • 所有的变量都指定了正确的类型?

    另一个可能不会直接导致问题,但是又可能产生深远影响的东西是变量类型的选择。如果int甚至是uint能够搞定的时候就不要用Number类型。因为前者更快,占用内存少。如果你有上千个数存储在数组中,你会发现使用Number类型要比int类型慢。

    最糟糕的 就是用未定义类型。例如objects。它们可以存储number和integer,甚至是其他东西。同样,注意到使用MovieClips时是否可以直接用单帧的Sprites类代替。

  • 你是否记得包含所有字体?

    用动态的ActionScript来控制text fields是十分棘手的。如果你放置了text fields在stage上后又忘记了将它们所用的字体嵌入进去,你就会看到出错信息。更糟糕的是如果你动态的创建了text fields并且试图使用并没有嵌入到movie中的字体,你将看到的是空白而不是文字。

    你可以通过到库面板上,通过使用它右上方的下拉菜单来添加一个字体到库中。从而将字体添加到你的movie种。记住,你需要嵌入多个版本的字体来处理类似于Arial和它的粗体等。

  • 测试问题

    这些主要是指那些发生在你测试或那些你测试步骤中的部分东西。

  • 你是否需要禁止键盘快捷键?

    当你使用键盘输入进行测试的时候,你会发现有些按键并没有响应。这是因为在测试环境中存成一些快捷键占用了这些按键。

    你可以关闭这些快捷键来使得你的movie能够像在web上一样进行测试。通过控制->关闭快捷键关闭。

  • 你是否在其他帧率下测试过?

    如果你是基于时间编写的动画,那帧率的不同并不会影响到你的程序。动画都能保持同样的速度。但是仍然值得测试一下在低速率如6,12等速度下去查看一下用户在性能差的机子上的情况。

  • 你是否在服务器上测试过?

    有一个问题就是你的测试都是基于所有的对象在movie开始时都存在。但是事实上Flash movie 是流文件。也就是说他们在所有媒体加载之前就已经开始播放了。

    当你在本地进行测试时,所有的媒体直接都在那了。然而但是上传到服务器上进行测试,其中的一些媒体可能在刚开始的几秒或几分钟是缺失的。

    当然你可以通过一个加载界面来实现等待所有媒体的加载。

转载于:https://www.cnblogs.com/liusy1988/archive/2011/11/10/2244823.html

ActionScript 游戏编程易错清单相关推荐

  1. 钢七连C2游戏编程具体知识点清单V2.0

    以下46项知识的讲解,不再上传.一个学生多会了46项知识.技术.案例项目,是否提高了职业竞争力.青出于蓝,学生成长为第二个老师. 游戏编程的具体知识点清单V2.0 1 腾讯天美工作室游戏资源 游戏图书 ...

  2. c语言指针编程易错点,C语言中指针的一些易错点!

    1.字符数组与字符串的使用 注意:数组名是指向数组首个元素的地址. 先看个例子: #include int main() { char *str = "hello"; int le ...

  3. STM32串口编程易错点

    注意   串口发送函数 使用STM官方的LIB 中的库函数发送之后 加一点延时   否则会错误  接收数据不正常 正确做法是  加上等待发送完成 转载于:https://www.cnblogs.com ...

  4. 易语言exe读写游戏例程源码_中文编程易语言的学习方法是什么

    学习中文编程易语言的可以看我的视频啊.进入我的主页.请点下关注谢谢. ----------------------------------------------------------------- ...

  5. Java 编程规范 -- 易错精简版

    Part 1 – 易错点 --  edit by liudeyu,If you have any adivice or suggestion, please participate in the di ...

  6. Java进阶3 - 易错知识点整理(待更新)

    Java进阶3 - 易错知识点整理(待更新) 该章节是Java进阶2- 易错知识点整理的续篇: 在前一章节中介绍了 ORM框架,中间件相关的面试题,而在该章节中主要记录关于项目部署中间件,监控与性能优 ...

  7. 【转】游戏编程中的人工智能技术--神经网络

    原文:http://blog.csdn.net/ecitnet/article/details/1799444 游戏编程中的人工智能技术 . > .  (连载之一) 用平常语言介绍神经网络(Ne ...

  8. 全国计算机等级考试四级数据库易错知识点

    自己做题的一些易错点收纳,红色的是错两次以上的知识点 数据库原理: 两个关系代数表达式相等的条件是 产生的结果有相同的属性集:2.相同的元组集 两个调度等价有3个条件,1.读同样的值:2.readTj ...

  9. 【游戏设计模式】之四 《游戏编程模式》全书内容提炼总结

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/53240330 作者:毛星云(浅 ...

  10. 【游戏设计模式】之 《游戏编程模式》全书内容提炼总结

    转自浅墨毛星云:http://blog.csdn.net/poem_qianmo/article/details/53240330 这是一篇超过万字读书笔记,总结了<Game Programmi ...

最新文章

  1. php session already send by ……
  2. Java黑皮书课后题第10章:10.3(MyInteger类)设计一个名为MyInteger的类
  3. 计算机用户登录设置成2000,2008计算机等级考试:Windows2000系统选项设置
  4. TcxComboBox控件说明
  5. [转载] python numpy np.exp()函数
  6. 6Lua元表和冒号 self
  7. JavaWeb之JSP技术总结
  8. uni-app 变量赋值后被实时同步
  9. 如你以安全模式启动计算机,如何以安全模式启动计算机?
  10. CAD制图初学入门如何提高CAD绘图效率?
  11. 微信小程序模板文件的引入
  12. 51单片机温度控制调速风扇仿真设计
  13. 4600万台销量!树莓派炼成之路
  14. matlab里function函数的用法,function函数 function函数的具体用法
  15. Adobe Flash Player / 功能
  16. require(): open_basedir restriction in effect. File(/www/wwwroot/wei/files/vendor/autoload.php)
  17. 用批处理自动设置IE代理
  18. Unity接入GooglePlay内购V4(源生Android方式)
  19. 三级指标 主成分分析_主成分分析法(PCA)
  20. 2019数字中台/CRM 十大新闻出炉:期待企业服务大变局!

热门文章

  1. HAXM 6.0.5显示不兼容Windows
  2. CKEditor 实例
  3. 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
  4. Extjs4.2如何实现鼠标点击统计图时弹出窗口来展示统计的具体列表信息
  5. 编程算法基础-一刀切法
  6. MS UC 2013-2-Deploy Microsoft Exchange Server 2013-1-Prerequisites
  7. 《Effective C#》读书笔记——条目14:尽量减少重复的初始化逻辑.NET资源管理
  8. [转]高性能JavaScript模板引擎原理解析
  9. 论文:GeoGebra 在线数学应用函数演示
  10. 【内外网映射】通过外网ip来访问虚拟机服务器【转载】