至从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;
 }
};