- 浏览: 336746 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangjun0603:
学习了,写的真好!
native2ascii的简单应用 -
qq672076266:
...
native2ascii的简单应用 -
loyalboys:
...
native2ascii的简单应用 -
hanjinting1004:
...
Flex开发者需要知道的10件事 -
管好你家猫:
学了,文章,
native2ascii的简单应用
Flex include和import ActionScript代码
为了让你的MXML代码可读性增强,你可以在<mx:Script>标签内引用ActionScript代码文件,而不是把大块的代码都插入到<mx:Script>里。引用ActionScript有include和import两种方式。
在ActionScript中include和import有着截然不同的区别。Include是将一个文件中的代码拷贝到另一个文件中去,也就是将代码拷贝到include语句所在的位置上。Import是添加了对类或包的引用,这样你就可以访问其他的类中定义的对象和属性。通过import导入的代码文件必须存在于你导入的路径上。通过include导入代码文件,输入的文件地址必须与主文件要能在相对路径上寻找到,或者通过绝对路径也可以。
你可以在你的Flex应用程序中使用include语句和< mx:Script source="filename">标签来添加ActionScript代码。
你可以在<mx:Script>内使用import语句来引用你的Flex应用程序中可能需要的类和包。
你可以在<mx:Script>标签内通过引用外部的ActionScrit文件来引入ActionScript代码。在编译的时候,编译器会将整个代码文件中的内容拷贝到你的MXML程序中,就像你真的在标签内写了代码一样。在<mx:Script>代码块中,ActionScript语句只能在函数内部。引入的代码文件也可以定义静态变量和命名空间,引入其他的ActionScript文件,导入声明定义,和使用命名空间。但你不能将要导入的文件定义为类。
引入的ActionScript文件中定义的变量和函数可以允许给MXML文件中的任何组件使用。引入的ActionScript文件的名字不能与导入的ActionScript类的名字一样。Flex可以访问导入的文件中的变量和函数,但不能添加新的类(本人理解为被导入的文件不能是个类),因为MXML文件本身就是一个类。
导入的AS文件不一定非要和MXML文件在同一个目录下。然而,你必须让你的程序能够在目录结构上正确识别到你的ActionScript代码文件。
下面有两种方法能在Flex应用程序中引入外部的ActionScript文件:
§ 使用<mx:Script>标签的source属性。这是引入外部ActionScript代码文件的首选方法。
§ 在<mx:Script>代码块中使用include语句。
使用source属性来引入ActionScript文件
你可以在Flex应用程序中使用<mx:Script>标签的source属性来引入外部的ActionScript文件。这种方式可以让你的MXML文件中的代码不那么零乱而且还可以提高代码的可重用性。
不要让代码文件与程序文件的名字一样。这样会让编译器报错。
下面的是IncludedFile.as文件的内容:
// usingas/includes/IncludedFile.as
public function computeSum(a:Number, b:Number):Number {
return a + b;
}
下面例子中引入了IncludedFile.as文件中的内容。该文件是在引入它的文件的子目录下。
<?xml version="1.0"?>
<!-- usingas/SourceInclude.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script source="includes/IncludedFile.as"/>
<mx:TextInput id="ta1st" text="3" width="40" x="170" y="24" textAlign="right"/>
<mx:TextInput id="ta2nd" text="3" width="40" x="170" y="52" textAlign="right"/>
<mx:TextArea id="taMain" height="25" width="78" x="132" y="82" textAlign="right"/>
<mx:Button id="b1" label="Compute Sum"
click="taMain.text=String(computeSum(Number(ta1st.text), Number(ta2nd.text)));"
x="105"
y="115"
/>
<mx:Label x="148" y="52" text="+" fontWeight="bold" fontSize="17" width="23"/>
</mx:Application>
<mx:Script>标签的source属性支持相对路径和绝对路径两种方式
。
你不能在同一个<mx:Script>标签内既使用source属性又写ActionScript代码。如果需要这么做的话,需要使用两个<mx:Script>标签。
Include指令一个ActionScript语句,可以把指定的文件中的内容拷贝到MXML文件中去。Include指令的语法如下所示:
include "file_name";
下面的例子中引入了myfuncitons.as文件:
<?xml version="1.0"?>
<!-- usingas/IncludeASFile.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
/* myfunctions.as文件定义了两个返回字符串的函数 */
include "includes/myfunctions.as";
]]></mx:Script>
<mx:Button id="myButton"
label="Call Methods in Included File"
click="ta1.text=doSomething();ta1.text+=doSomethingElse()"
/>
<mx:TextArea width="268" id="ta1"/>
<mx:Button label="Clear" click="ta1.text=''"/>
</mx:Application>
你可以让每个include指令都指向单一个文件,也可以使用任意多的include指令语句。Include指令可以嵌套使用。通过include指令引入的文件中也可以通过使用include指令引入其他的文件。
Include指令仅仅支持相对路径。
Include指令只能在允许多条语句执行的地方使用。例如,下面的例子就是错误的:
if (expr)
include "foo.as"; //IF语句的后面的第一条语句可以执行,剩下的语句都不行
...
下面的例子是正确的:
if (expr) {
include "foo.as"; // IF后的{}内的所有语句都可以执行
}
花括号中允许使用多条语句所以你可以在花括号中添加多条语句。
Adobe建议:尽量不要使用include指令来引用大量的ActionScript文件
。你应该将代码分成不同类文件中,然后将这些类文件存放在合适的逻辑包结构中。
<mx:Script>标签的source属性与include指令引用文件的方式各有不同。
下面阐述的就是<mx:Script>标签的source属性引用外部文件时的有效的路径:
§ 相对URL,例如../myscript.as。没有以斜线开头URl决定了文件的相对路径。如果<mx:Script source="../IncludedFile.as">包含在"mysite/myfiles/myapp.mxml,"里,系统会寻找"mysite/IncludedFile.as"。(../标示上一级目录)
ActionScript中的include指令只能引用相对的URL。Flex会从源代码路径中寻找导入的类和包。Flex不会从源代码路径中寻找那些包含了include指令的文件或<mx:Script>标签的source属性引用的文件。
导入类和包
如果你创建了多个公用类或者存放了常用函数的ActionScript文件,你可能希望将它们存储在包内的一组类中。你可以使用import语句来导入AcionScript类和包。导入之后,当你使用ActionScript来访问类的时候你不用输入完整的类名。
下面的例子中导入了MyPackage.Util包内的MyClass类:
<?xml version="1.0"?>
<!-- usingas/AccessingPackagedClasses.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import MyPackage.Util.MyClass;
private var mc:MyClass = new MyClass;
]]></mx:Script>
<mx:Button id="myButton" label="Click Me" click="myButton.label=mc.returnAString()"/>
</mx:Application>
在这段代码中,取代使用完整类名(MyPackage.Util.MyClass)来引用类的是你可以使用MyClass来引用类。
你也可以使用通配符(*)来导入整个包。例如,下面的语句就是导入了整个MyPackage.Util包:
import MyPackage.Util.*;
Flex会搜寻导入的文件和包,并且只导入那些被最终生成的SWF文件用到的类和包。
简单的定义完整的类名是不够的。你应该在仅仅当需要区别两个在不同的包内的但有同样名字的类的时候使用完整的类名。
如果你在程序中导入了类但并没有使用它,那么这个类就不会编译到最终生成的SWF文件的字节代码中去。因此,使用通配符(*)导入整个包并不能增加SWF文件的大小。
发表评论
-
应用避免访问浏览器缓存
2011-05-12 17:33 1386项目经常遇到这么个问题:程序做了改动之后,由于浏览 ... -
flex皮肤资源
2011-05-05 15:28 1299如果要找flex皮肤,这里的皮肤真是多。http: ... -
flex利用asdoc生成doc和制作chm
2011-04-02 17:33 1630How to set up ASDoc in Flex Bui ... -
restrict的应用实例
2011-04-02 11:54 11321. 限制某个字符的输入,用符号 ^ 跟上要限制的 ... -
flex中as、instanceof、is、 typeof用法
2011-03-24 09:48 4556“as” 我主要用它做类型转化 假设有一个类叫做 ... -
在Chart上画平均线的三种方法
2011-02-16 14:52 1425在Chart上画平均线的三种方法 ... -
Flex Frameworks
2010-11-12 15:32 1000Some say that if a t ... -
flex4国际化
2010-11-11 16:56 2125国际化变得如此简单 <?xml versi ... -
使用ToolTipManager自定义tooltip
2010-11-05 14:52 2621直接贴代码,一看就懂。 <?xml version=& ... -
flex 校验
2010-11-05 14:41 1035①flex中的校验可以使用mx.validator ... -
Flex中的fx、mx和s命名空间
2010-11-05 13:12 3390Flex 4带给我们的 ... -
socket中writeUTF和writeUTFBytes的区别
2010-11-03 10:25 2797Q:用writeUTF发送数据的时候,后台多 ... -
修改flex默认loading
2010-10-18 13:51 2525一: SWF Flex 2 PreloaderSWF ... -
AIR文件操作
2010-09-26 10:01 2928AIR文件操作(一):AIR文件基础 AI ... -
ActionScript 3.0 Socket编程
2010-09-17 17:25 1171在使用ActionScript3.0进行编程的时候需要注 ... -
as 对象深度拷贝
2010-08-20 10:32 992这是一篇关于as3中对象深度拷贝的问题今天自己总结下,便 ... -
Create a FlexUnit TestCase
2010-04-29 20:34 1045Problem How to create a Fle ... -
as3corelib
2010-04-29 20:10 1487google code :http://code. ... -
FusionCharts
2010-04-28 19:26 2370无意中接触到这个产品FusionCharts,3D ... -
flex datagrid自动换行
2010-04-19 17:10 2887以为datagrid的自动换行有多复杂,其实 ...
相关推荐
在深入探讨JSP中的`include`机制之前,我们先来明确一下JSP(Java Server Pages)的基本概念。JSP是一种服务器端脚本语言,用于创建动态网页,它将HTML、CSS、JavaScript与Java代码结合在一起,允许开发者在服务器上...
MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源代码详析MP3源...
### 详析模式方法及其在教育科学研究中的应用 #### 一、教育研究中因果分析的困境呼唤详析模式方法 教育研究的对象主要是人及其相关的社会现象,这些对象本身具有高度的复杂性和不确定性。例如,教育成就与性别...
scjp 试题中文讲解,各个章节对应java知识点,并有相关试题练习
1. **内容共创矩阵**:完美日记深谙内容营销之道,通过与各类达人、明星的合作,创造丰富多元的内容,吸引并激活各圈层用户。例如,与大英博物馆联名的眼影盘,以及与明星赖冠霖合作的新品气垫,都是通过内容共创...
CAD平台软件正版化之详析.pdf
Java并发编程学习之ThreadLocal源码详析 ThreadLocal是Java并发编程中的一种机制,用于解决多线程访问共享变量的问题。它可以使每个线程对共享变量的访问都是线程安全的,使得多线程编程变得更加简单。 ...
CAD平台软件正版化之详析 (1).pdf
2020年老牌国货的年轻化之路——详析丸美的社媒营销策略
SCJP试题详析是针对这项考试的一份详细的学习资料,它涵盖了考试的所有重要概念、语法和编程实践。 在SCJP试题详析中,你可以期待学习以下几个关键知识点: 1. **Java基础**:这包括Java语言的基本结构,如类、...
SCJP试题详析 希望对考认证的有用01
其中,网络服务AWS是亚马逊的重要增长点之一。AWS为全球企业提供包括计算、存储、数据库、应用程序等在内的云服务,凭借其领先的技术和服务,赢得了市场的广泛认可。AWS不仅帮助亚马逊实现了业绩的质变式发展,而且...
2020年极致爆品的进阶之路——详析珀莱雅的社媒营销策略-微播易-202009.zip
这份名为“2020年极致爆品的进阶之路——详析珀莱雅的社媒营销策略”的报告,深入探讨了珀莱雅如何通过社交媒体平台提升品牌影响力,打造爆款产品,并引领行业趋势。 首先,珀莱雅的社媒营销策略注重内容创新。在...
2020年国风爆品的进阶之路——详析花西子的社媒营销策略-微播易-202009.zip
from datetime import datetime now = datetime(2022, 3, 1) ``` 创建了一个表示2022年3月1日0时0分0秒的日期时间对象。 (2)将字符串或Unicode转化为`datetime` 对象: `datetime.strptime(date_string, format)`...
2分 SCJP试题详析
2分 SCJP试题详析
2020年老牌国货的年轻化之路——详析丸美的社媒营销策略-微播易-202009精品报告2020.rar
2020年国风爆品的进阶之路——详析花西子的社媒营销策略-微播易-202009精品报告2020.pdf