flex 之 include and import 详析

2024-01-25 04:32
文章标签 import include flex 详析

本文主要是介绍flex 之 include and import 详析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


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文件的大小。

这篇关于flex 之 include and import 详析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642089

相关文章

ImportError: cannot import name ‘print_log‘ from ‘logging‘

mmcv升级到2.+后删除了很多 解决 查FAQ文档,找到 添加到mmcv.utils下即可

UserWarning: mkl-service package failed to import

安装完成anaconda,并设置了两个环境变量  之后再控制台运行python环境,输入import numpy as np,提示错误 D:\InstallFolder\Anaconda3\lib\site-packages\numpy\__init__.py:143: UserWarning: mkl-service package failed to import, therefore

The import com.google cannot be resolved

The import com.google cannot be resolved,报错: 第一感觉就是缺少jar包,因为项目用maven管理,所以在pom.xml中添加: <dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.3.1</ver

【CSS】flex布局 - 左边超过打点, 右边完整展示

场景:宽度一定的情况下右边自适应,左边被挤压。 需要的效果如下: flex 的三个参数分别对应:flex-grow、flex-shrink、flex-basis。 flex-grow:定义项目的放大比例,默认为0。即如果存在剩余空间,也不放大。flex-shrink:定义项目的缩小比例,默认为1。即如果空间不足,该项目将缩小。flex-basis:定义在分配多余空间之前,项目占据的主轴空间。

兔子-(PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP'

由于在PHP最新的版本中增加了一个配置项目“request_order”,默认值为“GP”,这个存在一定的安全风险。这里我们建议用户将配置更改为“CGP” 可以在php的安装目录下找到php.ini配置目录,找到下面选项: request_order = "GP"  更改为 request_order = "CGP"   重启服务器后即可。 此

Vue3+vite中使用import.meta.glob

前言:         在vue2中支持require导入模块或文件但是在vue3中已经不支持require导入了,为此vite提供了一个全新的方法import.meta.glob方法来支持批量导入文件  import.meta.glob 匹配到的文件默认是懒加载的,通过动态导入实现,并会在构建时分离为独立的 chunk。如果你倾向于直接引入所有的模块(例如依赖于这些模块中的副作用首先被应用

Python 2.7 安装MySQLdb模块 import MySQLdb

python 2.7 使用 import MySQLdb 报 Traceback (most recent call last):File "<stdin>", line 1, in <module>ImportError: No module named MySqldb 于是乎执行一下命令 一下搞定 pip install MySQL-python 再次执行import MySQ

2、#include和#define

#include和#define 一、#include二、#define宏定义1、宏变量2、宏函数 一、#include #include是预处理指令,会将头文件直接替换到文件中。 // hello.hvoid foo() {int c = 0;int d = 1;}// hello.cpp#include "hello.h"int main() {int a =

【大数据Java基础-JAVA 面向对象11】关键字(二):package/import

1.1 使用说明: * 1.为了更好的实现项目中类的管理,提供包的概念 * 2.使用package声明类或接口所属的包,声明在源文件的首行 * 3.包,属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、“见名知意” * 4.每"."一次,就代表一层文件目录。 1.2 举例: 举例一: 某航运软件系统包括:一组域对象、GUI和reports子系统 举例二:MVC设计模式