`
flash7783
  • 浏览: 308394 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

actionscript深入不止一点点(程序员篇)

阅读更多

1. 带有命名空间的ActionScript文件 : Package
组织大量的as文件,如何防止命名冲突? 和Java一样,基本思路是使用Package,如:

Js代码 复制代码
  1. // 这是actionscript.不是js代码   
  2. package com.example.programmingas3{   
  3.     public class Goods {   
  4.         public function getName(id:int): String{   
  5.             if(id == 1){   
  6.                 return "IBM Laptop";   
  7.             } else {   
  8.                 return "Samsung MP3";   
  9.             }   
  10.         }   
  11.     }   
  12. }  
// 这是actionscript.不是js代码
package com.example.programmingas3{
    public class Goods {
        public function getName(id:int): String{
            if(id == 1){
                return "IBM Laptop";
            } else {
                return "Samsung MP3";
            }
        }
    }
}



这个文件的目录存放结构必须和包名一致。这里包名是com.example.programmingas3,那么 Goods.as相应地应存储在com\example\programmingas3\下,这样,如果其他人也定义了一个同名Goods.as文件,就可以放到其他包中。从而达到规划大规模源码的基础。

假设com上级目录在d:\,现在考虑编译Goods.as.命令行进入d:\,运行下面的命令编译:
amxmlc com\example\programmingas3\Goods.as

很意外!返回结果:
D:\com\example\programmingas3\Goods.as: Error: A file found in a source-path must have the same package structure '', as the
definition's package, 'com.example.programmingas3'.

为什么呢? 其实和Java程序不一样,带包名的ActionScript是不能直接编译的,必须有一个主文件引导才可以。在包的根目录,这里就是指com上级的目录,在根目录下建立一个主as文件,名为HelloWorld.as,内容如下:

Js代码 复制代码
  1. // 这是actionscript.不是js代码   
  2. package {   
  3.   import com.example.programmingas3.*;   
  4.   import flash.display.*;   
  5.   import flash.text.*;   
  6.   
  7.   public class HelloWorld extends Sprite{   
  8.     public function HelloWorld(){   
  9.         var goods:Goods = new Goods();   
  10.           
  11.         var myField:TextField = new TextField();   
  12.         myField.x = 20;   
  13.         myField.y = 30;   
  14.         myField.autoSize = TextFieldAutoSize.LEFT;   
  15.         myField.text = goods.getName(1);   
  16.         addChild(myField);   
  17.     }   
  18.   }   
  19. }  
// 这是actionscript.不是js代码
package {
  import com.example.programmingas3.*;
  import flash.display.*;
  import flash.text.*;

  public class HelloWorld extends Sprite{
    public function HelloWorld(){
        var goods:Goods = new Goods();
       
        var myField:TextField = new TextField();
        myField.x = 20;
        myField.y = 30;
        myField.autoSize = TextFieldAutoSize.LEFT;
        myField.text = goods.getName(1);
        addChild(myField);
    }
  }
}


上面的代码是用import关键字引用Goods类,然后就可以像在一个文件中使用Goods那样使用它了。

编译:
amxmlc HelloWorld.as
运行
flashplayer HelloWorld

以下是运行结果:



3. 大规模ActionScript文件交换 : .SWC
在实际项目中你总可能使用到第三方的as文件,按照前面学习的知识,第三方提供的as文件通常应该存储在在以自己公司域名命名的目录下(就是按宝组织源码),使用者只要把这些文件复制到本机某个目录下,然后再import进来就可以使用。

问题提出:大量的as文件不方便交换;其二,第三方组织可能不想公开他们的源代码,怎么办? 解决方案是:第三方提供编译的as给你!

前面不是刚说过as不能编译吗? 其实不完全正确,FlexSDK中的compc就可以将那些带包名的as文件编译成swf文件,并打包成一个文件,文件的扩展名是.swc,在Flash中这叫组件。其实组件文件格式实际上是zip, 把扩展名.swc改成.zip用winrar打开看看就知了

好,仍然以前面例子为基础,现在让我们回顾一下代码目录结构


上面还新增了一个Orders.as,内容如下:

Js代码 复制代码
  1. // 这是actionscript.不是js代码   
  2. package com.example.programmingas3{   
  3.     public class Orders{   
  4.            
  5.         public function getName(id:int): String{   
  6.             if(id == 1){    
  7.                 return "ORDER001";   
  8.             } else {   
  9.                 return "ORDER002";   
  10.             }    
  11.         }   
  12.     }   
  13. }  
// 这是actionscript.不是js代码
package com.example.programmingas3{
	public class Orders{
		
		public function getName(id:int): String{
			if(id == 1){ 
				return "ORDER001";
			} else {
				return "ORDER002";
			} 
		}
	}
}


改造过的HelloWorld.as不但调用了Goods.as,而且调用了Order.as

Js代码 复制代码
  1. // 这是actionscript.不是js代码   
  2. package {   
  3.   import com.example.programmingas3.*;   
  4.   import flash.display.*;   
  5.   import flash.text.*;   
  6.   
  7.   public class HelloWorld extends Sprite{   
  8.     public function HelloWorld(){   
  9.         var order:Orders = new Orders();   
  10.         var goods:Goods   = new Goods();   
  11.            
  12.         var myField:TextField = new TextField();   
  13.         myField.x = 20;   
  14.         myField.y = 30;   
  15.         myField.autoSize = TextFieldAutoSize.LEFT;   
  16.         myField.text = order.getName(1) + " -- " + goods.getName(2) ;   
  17.         addChild(myField);   
  18.     }   
  19.   }   
  20. }  
// 这是actionscript.不是js代码
package {
  import com.example.programmingas3.*;
  import flash.display.*;
  import flash.text.*;

  public class HelloWorld extends Sprite{
    public function HelloWorld(){
		var order:Orders = new Orders();
		var goods:Goods   = new Goods();
		
		var myField:TextField = new TextField();
		myField.x = 20;
		myField.y = 30;
		myField.autoSize = TextFieldAutoSize.LEFT;
		myField.text = order.getName(1) + " -- " + goods.getName(2) ;
		addChild(myField);
    }
  }
}



1). 将com包下的文件打包成.swc,准备被HelloWorld.as调用.进入命令行d:\,执行:
compc -include-sources com\example\programmingas3\ -output c:/3rd.swc

这将在c:\生成组件文件3rd.swc

2). 编译主文件HelloWorld.as
  amxmlc -library-path=c:/3rd.swc HelloWorld.as
注意参数-library-path是如何引用组件的。生成的HelloWorld.swf将不必依赖组件文件
3). 运行HelloWorld.swf
flashplayer HelloWorld.swf
结果如下:


最后我们来对比一下Java和SWF的雷同:

分享到:
评论

相关推荐

    actionscript程序员常用的工具类(as3-utils)

    对于ActionScript程序员来说,提高效率和代码质量的关键之一就是利用好各种工具类库。"as3-utils"就是一个这样的工具集合,它包含了对数组、颜色、Cookie和字符串等常用数据类型处理的实用方法。 在ActionScript 3 ...

    ActionScript 3.0开发技术大全(第一部分)

    第一部分: 第1篇 ActionScript3.0语言基础  第1章 ActionScript3.0概述  第2章 搭建ActionScript3.0开发环境  第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性  第4章 ActionScript3.0面向...

    actionscript3

    本书是国内第一本“面向原因式”(Why-Oriented Book)、全面系统介绍Flash ActionScript 3的书籍。...使ActionScript 2 程序员能够快速上手ActionScript 3 ,并对ActionScript 2代码移植有相当帮助。

    ActionScript3.0宝典 pdf 高清晰

    总之,ActionScript 3.0宝典是一本宝贵的资源,对于希望创建互动内容、游戏或应用程序的开发者来说,这本书将提供深入的指导和实践案例。通过研读这本书,你可以掌握创建动态Web内容所需的关键技能,并且能够利用...

    ActionScript

    ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用程序(RIA)以及动画。在“ActionScript开发技术大全”这个主题中,我们...

    ActionScript 2.0编程入门经典 例程

    本篇文章将深入探讨ActionScript 2.0编程的基础知识,结合提供的压缩包文件章节,我们将逐一分析其中的核心概念和关键点。 首先,让我们从第三章开始,这一章通常会介绍ActionScript的基础语法,包括变量、数据类型...

    Actionscript中文帮助文档

    ActionScript是一种基于ECMAScript规范的编程语言,主要用于开发Adobe Flash平台上的交互式内容,如网页游戏、动画和应用程序。这个“Actionscript中文帮助文档”是开发者在学习和使用ActionScript 3.0时的重要参考...

    ActionScript基础教程,是学习actionscript的入门级教程

    ### ActionScript基础教程知识点...通过以上知识点的深入学习,你将能够掌握ActionScript的基础,并具备创建复杂Flash应用的能力。无论是制作互动网站、游戏还是多媒体演示,ActionScript都是一个强大而灵活的选择。

    flash ActionScript 3.0 PPT课件

    【ActionScript 3.0 知识点详解...总之,ActionScript 3.0的学习需要深入理解面向对象编程原理,熟练掌握各种开发环境的特点,并通过实践不断积累经验。通过持续学习和实践,你可以成为一名出色的ActionScript开发者。

    ActionScript 3设计模式(扫描版)

    《ActionScript 3设计模式(扫描版)》一书深入探讨了在ActionScript 3编程环境中应用设计模式的策略和技巧。设计模式是软件工程领域的一种解决方案,它为常见的问题提供了一种经过验证的设计方案,使得程序员能够更...

    ActionScript3.0cookbook中文版

    《ActionScript3.0 Cookbook中文版》是一本专注于ActionScript3.0编程技术的实践指南。ActionScript是Adobe Flash平台上广泛使用的脚本语言,尤其在创建互动内容、游戏和富互联网应用程序(RIA)中扮演着核心角色。...

    ActionScript开发技术大全

    《ActionScript开发技术大全》是一本全面覆盖ActionScript编程语言的教程,旨在帮助读者深入理解和掌握这一关键的脚本语言,特别是在Flash和Flex应用开发中的使用。ActionScript是Adobe Flash平台的核心,它使得动态...

    Flash CS5 ActionScript 3.0 参考.chm

    总之,《Flash CS5 ActionScript 3.0 参考》这份文档覆盖了ActionScript 3.0的各个方面,从基本语法到高级特性的深入探讨,对于任何想要掌握Flash平台开发的程序员来说,都是必不可少的学习资料。无论你是初学者还是...

    flash actionscript 2.0 语言参考,中文,清晰,pdf

    《Flash ActionScript 2.0 语言参考》是学习和掌握Flash编程不可或缺的资源,尤其对于初学者和希望深入理解ActionScript的开发者来说,它提供了详尽的语法和功能介绍。ActionScript是Adobe Flash平台上用于创建交互...

    ActionScript3.0 Game Programing中文版

    《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...

    spring actionscript 入门例子

    Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...

    Flash程序员上机面试题目

    标题 "Flash程序员上机面试题目" 暗示了这个话题是关于Flash编程技术的面试实践环节,主要针对那些使用ActionScript3进行开发的专业人士。ActionScript3是Adobe Flash平台上的一种面向对象的编程语言,广泛用于创建...

Global site tag (gtag.js) - Google Analytics