关于AS编程的几点说明
发布:kinglong | 发布时间: 2005年3月22日至从Flash MX 2004 推出了AS2.0的规范后。网上就一直讨论“AS1.0还是AS2.0规范好”的问题。我从三年的Flash编程的经历来说个人的几点说明(只是个人观点)。
1、从Java编程角度来说,AS2.0规范还不是一个标准面向对象的编程规范,它缺少像方法重载等特性。但能够满足基本的需要了!
2、对于团队合作的项目,建议采用AS2.0规范了,它的优点是模块分离,功能独立,易于扩展和维护等。模块分离对于团队分工开发非常好,而功能独立则在调试过程中能够发现在问题,至于扩展和维护对于后续开发是非常有利的!
3、对于Flash组件的开发,也建议采用AS2.0规范了,一般情况下,如果你不用flash player 7.0的新特性,开发出来的组件在flash player 6.0下面也能运行的!
4、Flash必经是设计和开发两头并进的工具,所以对于Flash动画人员来说,还是采用AS1.0规范是比较方便的,基于此的动画效果代码编写也比较简单!
5、采用AS1.0规范时,建议用实例名称和帧代码来编写代码,这样便于以后的维护!尽量不要用基于MC本身上编程!
下面举一个实例
| 以下是Constant类代码片段: //类中常量; class ppc.dial.Constant extends MovieClip{ //Socket联接成功; public static var SOCKET_CONNECT_SUCCESS:String = "Socket.Connect.Success"; //Socket联接失败; public static var SOCKET_CONNECT_FAILED:String = "Socket.Connect.Failed"; //Socket联接关闭; public static var SOCKET_CONNECT_CLOSED:String = "Socket.Connect.Closed"; //Socket数据返回; public static var SOCKET_CONNECT_DATA:String = "Socket.Connect.Data"; function Constant(){ } } |
| 以下是Socket类代码片段: import ppc.dial.Constant; class ppc.dial.Socket extends MovieClip { private var __socket:Object; private var __target:Object; private var __host:String; private var __port:Number; private var __rotative:Boolean = false; //Socket构造函数; //==============================; function Socket(host:String, port:Number, rotative:Boolean) { this.__host = host; this.__port = port; if (rotative != undefined) { this.__rotative = rotative; } init(); } //init初始化方法; //==============================; private function init():Void { this.__socket = new XMLSocket(); this.__socket.__target = this; this.__socket.onConnect = this.onConnect; this.__socket.onData = this.onData; this.__socket.onClose = this.onClose; this.__socket.connect(this.getHostName(), this.getHostPort()); } //getHostName获取主机名信息; //==============================; public function getHostName():String { return this.__host; } //getHostPort获取主机端口号信息; //==============================; public function getHostPort():Number { return this.__port; } //onConnect事件; //==============================; private function onConnect(success:Boolean):Void { if (success) { this.__target.onStatus(Constant.SOCKET_CONNECT_SUCCESS, null); this.__target.doCommandBuffer(); } else { this.__target.onStatus(Constant.SOCKET_CONNECT_FAILED, null); if (this.__target.__rotative) { this.__target.connect(this.__target.getHostName(), this.__target.getHostPort()); } } } //onClose事件; //==============================; private function onClose():Void { this.__target.onStatus(Constant.SOCKET_CONNECT_CLOSED, null); } //onData事件; //==============================; private function onData(res:String):Void { this.__target.onStatus(Constant.SOCKET_CALL_PHONE, res); } //onStatus事件; //==============================; public function onStatus(code:String, result:Object):Void { } //onStatus事件; //==============================; public function connect(host:String, port:Number):Void { this.__socket.connect(host, port); } //send事件; //==============================; public function send(cmd:String):Object { this.__socket.connect(cmd); } //close事件; //==============================; public function close():Void { this.__socket.close(); } } |
| 以下是实例调用代码片段: import ppc.dial.Socket; import ppc.dial.Constant; var socket:Socket = new Socket("localhost", 6666, true); socket.onStatus = function(code:String, result:Object) { switch (code) { case Constant.SOCKET_CONNECT_FAILED : trace("Socket联接失败"); break; case Constant.SOCKET_CONNECT_SUCCESS : trace("Socket联接成功"); break; case Constant.SOCKET_CONNECT_CLOSED: trace("Socket联接关闭"); break; case Constant.SOCKET_CONNECT_DATA: trace("Socket返回的数据:"+result); break; } }; |
- 相关文章:
终于可以学习和开发flash lite 2.0的程序了 (2006-1-4 15:27:55)
最近刚完成的flash视频项目 (2006-1-4 15:24:2)
更新Flash视频服务端技术 (2005-12-1 15:20:22)
flash视频服务端应用开发 (2005-11-22 14:48:56)
更新Loading组件 (2005-11-9 15:28:47)
从AS2.0到AS3.0 (2005-10-18 15:34:1)
AS 3.0—flash变革性代码体系的来临 (2005-10-8 15:36:58)
Loading组件(原创组件) (2005-9-13 15:41:16)
Flash动态显示波形组件(原创组件) (2005-8-28 15:42:46)
prototype属性和ASSetPropFlags函数(转载) (2005-8-5 15:47:41)
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。




