本节内容概述了在使用actionscript编程和创建应用程序的时候需要遵循的一些规则,以及如何使我们的程序代码更有效和具有更好的可读性,更方便调试应用程序。
把这节写在前面,也是为了让开始接触ActionScript编程的开发人员从一开始就养成好的编程和开发习惯。
1. 遵循命名规则
一个应用程序的命名规划必须保持一致性和可读性。任何一个实体的主要功能或用途必须能够根据命名明显的看出来。因为ActionScript是一个动态类型的语言,命名最好是包含有代表对象类型的后缀。一般而言,名词_动词和形容词_名词之类的语法是最常用的命名方式,如:
影片名字:my_movie.swf
URL实体:course_list_output
组件或对象名称:chat_mc
变量或属性:userName
方法和变量的名称应该以小写字母开头,对象和对象的构造方法应该大写。命名变量的时候使用大小写混和的方式,并且使用字母打头,还可以包含数字和下划线。
下面的一些命名是非法的:
_count =5 ;//首字符不能使用下划线
5count = 0;//首字符不能使用数字
foo/bar = true;//包含非法字符
另外,ActionScript使用的保留字不能用来命名变量。
ActionScript是基于ECMAScript,所以我们可以根据ECMAScript的规范来命名。如,
course_list_output = "foo"; //全部小写,使用下划线分割字串
courseListOutput = "foo"; // 大小写混和的方式
BASEURL = http://www.foo.com; // 常量使用全部大写
MAXCOUNTLIMIT = 10;
MyObject = function(){ }; // 构造函数
f = new MyObject(); // 对象
注意;良好的命名规范还可以使用Flash的代码提示功能。
2. 给你的代码添加注释
使用代码注释能够使得程序更清晰,也便于我们阅读。Flash支持的代码注释方法有两种:
单行注释,通常用于变量的说明
var clicks = 0; // variable for number of button clicks
多行注释,通常用于功能说明和大段文字的注释:
/*
Initialize the clicks variable that keeps track of the number of times
the button has been clicked.
*/
一些具有特定意思的注释方法:
// :TODO: topic
表明一个主题的开始
// :BUG: [bugid] topic
显示了一个BUG所在
// :KLUDGE:
表明下面的代码并不完善,可能存在问题
// :TRICKY:
告诉开发人员下面的代码具有相互作用,修改之前请谨慎
3. 保持代码的整体性
无论什么情况,应该尽可能保证所有代码在同一个位置,这样使得代码更容易搜索和调试。我们在调试程序的时候很大的困难就是定位代码,如果大部分代码都集中在同一帧,问题就比较好解决了。通常,我们把代码都放在第一帧中,并且单独放在最顶层。如果在第一帧中集中了大量的代码,记得用注释标记区分,并在开头加上代码说明。
//===========================================
// 视频语音聊天系统
// FCAVPresence组件
// Copyright ◎2002 Macromedia, Inc. All rights reserved.
// 完 善: Liu21st, Liu21st@126.com
//---------------------------------------------------------
在独立的功能模块前面加上类似的标注:
//===========================================
// 参数初始化
//---------------------------------------------------------
4. 初始化应用程序
记得一定要初始化你的应用程序,init函数应该是你的应用程序类的第一个函数,如果使用面向对象的编程方式则应该在构造函数中进线初始化工作。该函数只是对应用程序中的变量和对象初始化,其它的调用可以通过事件驱动。
下面的例子可以说明如何进线初始化
function FCAVPresenceClass() {
this.init();
}
FCAVPresenceClass.prototype.init = function() {
this.name = (this._name == null ? "_DEFAULT_" : this._name);
this.prefix = "FCAVPresence." + this.name + ".";};
5.使用局部变量
所有的局部变量使用关键字var来申明,这样可以避免被全局变量访问,更重要的是,可以保证变量不被覆盖和混淆程序逻辑。例如,下面的代码没有使用var来申明,覆盖了其它变量。
counter = 7;
function loopTest()
{
trace(counter);
for(counter = 0; counter < 5; counter++)
{
trace(counter);
}
}
trace(counter);
loopTest();
trace(counter);
输出结果为:
7
7
0
1
2
3
4
5
6. 创建对象时使用原型添加方法和属性
当我们创建一个对象的时候,应当使用原型方式来添加对象的方法或属性,使得该方法或属性能够被所有该对象或子对象的实体所访问。这种能够确保内存中每个函数只有一份拷贝。作为一般的规则,不要在构造函数中定义方法。下面是一个正确的例子:
// Best practice for creating an object
MyObject = function()
{ }
MyObject.prototype.name = "";
MyObject.prototype.setName = function(name)
{
this.name = name;
}
MyObject.prototype.getName = function()
| 代码: |
| import mx.video.*; |
| { return this.name; } 下面这段代码是不可取的: // Less desirable practice for creating an object 使用上面的方式在每个对象的实体被创建的时候都会实体重新复制每一个属性和方法,会加重系统的内存开销。 7. 规范命名方式获取代码提示功能 这方面我已经有过详细的叙述,请看: |
现在,你不需要为FLVPlayback组件命名实例名称,因为组件存在于你的库中,你可以将其贴加到你的场景中或是放在别的MovieClip中。如下方法:
| 代码: |
| var Player:FLVPlayback = attachMovie ("FLVPlayback", "Player", getNextHighestDepth()); |
这里我们已经将FLVPlayback组件加入到你的影片中了,我们可以使用变量名”Player”与它通讯。接下来我们将沿着这条路加入皮肤和载入所要播放的视频内容。
3.2 皮肤
首先你需要熟知我们可用的皮肤文件所在位置,默认情况下在你安装完flash后,你存在于“C:\Program Files\Macromedia\Flash 8\en\Configuration\Skins”. 下。
当你选中一种皮肤后,你需要将其复制到你的源文件所存放的位置目录下,如同在上面针对设计师方法中一样,只不过在针对设计师方法是系统自动的复制过去的。对于当前这个教程,我们选中了”SteelExternalAll.swf”将其复制到我们的源文件存放的目录下。
我们在上面已经编写的代码,将FLVPlayback组件加入到影片中了,并且它有了一个变量名为”Player”,加入皮肤我们用下面的代码:
| 代码: |
| Player.skin = "SteelExternalAll.swf"; |
在运行时,组件FLVPlayback通过变量名”Player”应用我们选中的皮肤”SteelExternalAll.swf”.
你可以通过设置_x和_y属性来设置组件实例的位置。如下:
| 代码: |
| Player._x=Stage.width-Player._width-10;; Player._y=10 |
注意:很重要的一点是你需要将你的皮肤swf文件一同发送到你的远程服务上,前保存现有的文件目录结构。
现在组件已经位于场景的右上方了,我们选择不根据影片的大小缩放组件。如下:
| 代码: |
| Player.autoSize=false; |
3.3 指定播放视频
下面告诉FLVPlayback组件播放指定的视频,通过contentPath属性来完成如下:
| 代码: |
| Player.contentPath = "flv/movieName.flv"; |
你仍可以使用远程网址的形式如下:
| 代码: |
| Player.contentPath ="http://www.helpexamples.com/flash/video/water.flv" |
这样我们就完成了。如下小例子:
Ps by egoldy:不论使用哪种方法,使用flash8相对简单了许多,当然这里没有涉及到一些高级的应用.在使用代码时,不需要超过10行代码,只是有一点,一定记得将你的皮肤文件一同发送到服务器端去.同时注意皮肤文件的链接如:Player.skin="http://www.flash5566.com/Files/BeyondPic/2007-5/8/someskin.swf"