了解父脚本和面向对象----1

4/7/2006来源:Director教程人气:9415

翻译http://www.macromedia.com/devnet/mx/director/articles/oop_dir_Flash.html
感谢英语角和eiffelqiu的大力帮助

1&1.计划和实现对象

开发者经常凭借图表来分析游戏各部件的交互关系 , 检查他们的状态 ,并且绘制映射出他们行为间的交互关系。

大多数开发者最先开始编程都是采用过程化编程。为了做这些,他们创建了一个方法(句柄或函数)来完成一些基本的运转并且有时返回一个值。每个方法都是一个过程。


注意: 过程程序设计是一种程序设计方法。它意谓程序撰写在一种逻辑上的连续的方式。 程序工作通过一个简单的顺序的 原因/结果 事件,而且顺序是比较容易预料的。 过程经常非常特定的到一个单一程序;你在另外的一个程序中不大可能再容易的使用它们。


Director 和 Flash都可以让你选择使用对象,将一些过程赋予脚本实例,让你可以为你的游戏创建一个更模块化的设计和执行。 这种轻微但有重要意义的改变在程序设计上通常被叫做面向对象设计, 或 OOP 。

注意: 面向对象设计也是一种程序设计方法。 在面向对象设计中,你仍然使用过程,但是你使用一个最初的脚本 (被称为一个类)作为模板去创建没有数目限制的实例对象, 每个知道如何运行过程和包含封装的全局变量即是属性。这些变量是专用的,因为他们属于这个对象的这一个实例, 但是它们是持久化的(当程序运行后他们持续存在变量中)。

考虑两者都程序地设计一艘船像一个对象。 一艘船需要加速,转向,倒退, 和其他的一些事件。它有许多属性像油漆彩色,大小和浮力。 现在如果你想制造一艘以上的船只,你需要给一艘船的每个实例一个单独的脚本。 使用过程程序设计方法,你会为第二艘船的油漆彩色,大小和浮力设置新的变量名。


boat1.bouyancy=20boat2.bouyancy=23
在一个面向对象的模式中,一个脚本的对象或实例包含类脚本所定义的元素。这意味着boat1有它自己的油漆属性,而且其它的船也是。

无论你呼叫它什么: 一个mc,一个父脚本,一个行为,一个精灵或一个实例, 在每个 Macromedia flash 和shockwave游戏中的基础单元是一个对象。 因为 ActionScript 和lingo都支持面向对象程序设计方法,而且因为游戏中经常要求相似对象的许多实例, 创造模仿这些结构时常是最直觉的和明智的方式。

遵循面向对象程序设计,还有其他的好处。代码可重用,容易修改而且极大的减轻了你的负担。不幸地,它也能变成糊涂的,费解的,和不稳定。实施起来需要花费更长的时间,而且需要大量的实践才能掌握它

如何选择适当的时间和地点使用面向对象程序设计方法,而不是过程化程序设计方法,对于成功的开发你的游戏非常的重要。

通过判断和小心地描述游戏的每个对象的状态和交互能力,它可能加速目前的项目 , 并且减轻以后的游戏开发。这是使用面向对象设计来增加过程程序设计的基本理由。