- 浏览: 302837 次
- 性别:
- 来自: 南昌
文章分类
最新评论
-
秋风扫落叶:
不错,学习了。shadow文件中记录的格式是什么?
/etc/passwd & /etc/shadow 详解 -
key232323:
重拾jstl——写得很好。我收藏下。
JSTL标签用法 -
zxl10059:
不错,非常简明扼要
Hibernate分页 -
Batmankwok:
很好,所见略同,
自定义组件MXML和as两种实现的方式和区别 -
Dxx23:
摘话回帖!
通过response对象的sendRedirec ...
response.sendRedirect方式的转向与RequestDispatcher的forward方法的比较
1. 带有命名空间的ActionScript文件 : Package
组织大量的as文件,如何防止命名冲突? 和Java一样,基本思路是使用Package,如:
- // 这是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";
- }
- }
- }
- }
// 这是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,内容如下:
- // 这是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);
- }
- }
- }
// 这是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,内容如下:
- // 这是actionscript.不是js代码
- package com.example.programmingas3{
- public class Orders{
- public function getName(id:int): String{
- if(id == 1){
- return "ORDER001";
- } else {
- return "ORDER002";
- }
- }
- }
- }
// 这是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
- // 这是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);
- }
- }
- }
// 这是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的雷同:
发表评论
-
web.xml tomcat 和jetty 区别
2010-09-07 09:31 2136因为使用GWT,所以测试的时候是在jetty上运行的,但是最后 ... -
单元测试之实践四 Action的测试
2010-08-30 10:14 843Action的测试是比较辛苦的。因为它依赖与其他的环境(比如t ... -
单元测试之实践三 Service的测试
2010-08-30 10:13 960测试Service,因为Service依赖的Dao, 所以只需 ... -
单元测试之实践二,关于DAO的测试
2010-08-30 10:12 937前阵子发表过 我的第一个真正意义上的测试 。里面对于测试S ... -
Mockito特点
2010-08-30 10:02 10721. 只能使用jdk1.5以上,因为它的方便是用jdk1.5的 ... -
HttpUnit进行Web测试
2010-08-30 00:06 1665简介:HttpUnit是基于JUnit ... -
关于单元测试的一些看法
2010-08-28 14:26 885从参加工作以来,参加 ... -
Eclipse IDE下 Cactus + Jetty 对 Servlet 的测试
2010-08-28 13:09 1546在开发J2EE Web项目时,测试过程常涉及到代码与Web C ... -
用cactus,jetty实现对servlet类进行单元测试三(完)
2010-08-28 11:39 1102OK,可以开始写测试类了,代码为: pa ... -
用cactus,jetty实现对servlet类进行单元测试二
2010-08-28 11:37 1352按照官网的定义,我们就可以用MILY: 'Arial','sa ... -
用cactus,jetty实现对servlet类进行单元测试一
2010-08-28 11:35 1356JUnit是名声大燥了,想必只要学过JAVA的人都知道世上有个 ... -
相关测试工具下载
2010-08-26 17:21 1435相关测试工具下载 HP-Mercury软件测试工具下载,随时 ... -
单元测试实践小结
2010-08-26 16:40 606在系统开发过程种使用单元测试,会带来很多的的好处,最明显为: ... -
软件测试杂录
2010-08-26 14:41 1081比较杂,有空再整理一 ... -
J2EE单元测试
2010-08-26 11:06 1041一、测试原则 Java ... -
利用httpunit测试servlet
2010-08-26 10:33 2002传统的Java WEB应用中,核心技术莫过于Servlet类与 ... -
使用 EasyMock 更轻松地进行测试
2010-08-25 14:40 983测试驱动开发是软件开发的重要部分。如果代码不进行测试,就是不可 ... -
Cactus工作原理
2010-08-24 09:52 984Cactus 是Jakarta的子项目 ... -
Cactus实例讲解
2010-08-23 17:08 901Cactus简介 . 简介 Cactus实现了对JUni ... -
flex和java的通信
2010-08-17 15:35 715一、准备: 服务端:J ...
相关推荐
actionscript程序员在写程序的过程经常会遇到一些比较常见的array、color、cookie、string等处理。这里收集的比较全面
第一部分: 第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向...
本书是国内第一本“面向原因式”(Why-Oriented Book)、全面系统介绍Flash ActionScript 3的书籍。...使ActionScript 2 程序员能够快速上手ActionScript 3 ,并对ActionScript 2代码移植有相当帮助。
FlashMX常用ActionScript速查手册(属性篇)
第1篇ActionScript3.0语言基础 第1章ActionScript3.0概述 2 1.1ActionScript概述 2 1.1.1ActionScript环境 2 1.1.2ActionScript3.0特性 3 1.1.3ActionScript3.0代码组织 5 1.2ActionScript3.0API概览 5 1.3小结 8 第...
ActionScript 3.0 是一种强大的面向对象编程语言,它标志着 Flash Player Runtime 演化过程中的一个重要阶段。设计 ActionScript 3.0 的意图是创建一种适合快速地构建效果丰富的互联网应用程序的语言,这种应用程序...
第1章 揭开ActionScript的神秘面纱 第2章 Flash MX的动作面板 第3章 ActionScript编程初步 第4章 影片播放控制 第5章 控制影片剪辑 第6章 影片剪辑属性 第7章 影片剪辑方法 第8章 响应键盘 9章 输入文本和字符串...
Flash程序员上级面试题目,ActionScript
■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的字节码指令集,可使性能 显著提高 ■ 一个更为先进的编译器代码库,它更为严格地遵循 ECMAScript (ECMA 262) 标准, 并且相对于早期的编译器版本,可...
ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础ActionScript基础
ActionScript3代码规范 ActionScript3代码规范 ActionScript3代码规范
ActionScript3 入门经典,又被称为Actionscript3圣经 本书知识覆盖面广,虽有些方面不够深入,但作为入门教程, 过于深入是不必要的,相信此书会对希望学习AS3的程序员,打开一扇宽广之门
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
ActionScript3.0 中文版 ActionScript3.0 api 中文版说明文档
本书是一本高级ActionScript 3.0设计模式用书。大家或许也一直没有搞明白“高级”一词的含义。高级ActionScript 3.0指的是本书并不包含API引用函数以及ActionScript 3.0的入门基础这些主题。作者假定读者已经具备...
actionscript 3.0是 flash编程语言的一次重大升级,它更加高效、清晰和完善。本书详细地介绍了 actionscript 3.0的基础知识,包括 actionscript 3.0语言、actionscript 3.0对象的操作方法、显示列表的使用、事件...