Flex include和import ActionScript代码

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

(0)

相关推荐

  • Javascript 调用 ActionScript 的简单方法

    1. 在Flex中,ActionScript调用Javascript是比较简单的,说白了就是,在html里,怎么调用Javascript,在ActionScript就怎么调用就可以了 2. 如果用js调用as,就稍微麻烦一点,其实也比较简单 MXML代码: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com//mxml&

  • ActionScript 3.0中用XMLSocket与服务器通讯程序(源码)

    复制代码 代码如下: // // CXMLSocket.as // // // Written by Leezhm, 20th Oct, 2008 // Contact : Leezhm@luxoom.cn // package { import flash.events.DataEvent; import flash.events.Event; import flash.events.IEventDispatcher; import flash.events.IOErrorEvent; imp

  • JavaScript与ActionScript3两者的同性与差异性

    javascript和actionscript是基于什么标准的,大家知道吗? ActionScript 和 JavaScript 共享一个常用标准:ECMAScript.因此,如果您曾经用 JavaScript 编写过一个条件("if 语句")或迭代("循环语句"),则您可以使用 ActionScript.记住 JavaScript 和 ActionScript 一样是区分大小写的. 先来看看二者的同性与差异性: 共同点: a).二者语法相似,都遵循ECMAScri

  • JavaScript和ActionScript的交互实现代码

    复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import flash.external.ExternalInterface; publ

  • actionscript与javascript的区别

    当时Netscape的JavaScript使其在与ie的浏览器大战中独占鳌头,而后ie创建了jscript应对Netscape的JavaScript,而事实上jscript基本上抄袭的JavaScript,这也是微软一直备受诟病的一件事,jscript与JavaScript有一些语法上的不一样,但二者均是同一类web开发技术,而且目前流行的是JavaScript,jscript的使用已经越来越少了.另外JavaScript的核心为ecmascript,与actionscript的核心一样,所以学

  • Flash ActionScript 中按钮和电影剪辑的事件和方法

    事 件 方 法 说 明 on(press) onPress 鼠标左键按下 on(release) onRelease 鼠标单击(左键按下并释放) on(releaseOutside) onReleaseOutside 鼠标左键按下之后在按钮之外释放 on(rollOver) onRollOver 鼠标悬停在按钮之上 on(rollOut) onRollOut 鼠标移动到按钮响应区域之外 on(dragOver) onDragOver 鼠标在按钮上施动 on(dragOut) onDragOut

  • Flash中常用到的ActionScript控制语句用法

    很多朋友经常询问关于Flash的ActionScript脚本语句的用法,有些很简单的命令就能实现某种功能,我就从这里,那里,东拼西凑的找了一写,.现在我就把一些Flash的常用Action语句的基本用法讲解一下. 1.Goto:跳到一个指定的帧(Frame) Scene: 指定 Scene Frame:Number,Label,Expression,Next Frame,Previous Frame 可以选择 Frame 的编号,标号,通过表达式,下一帧,前一帧 Expression: 定义表达

  • ActionScript3禁止构造请求标头Referer

    作为未来RIA的主角FLASH,在安全方面做得越来越出色了. 在AS3中我惊奇地发现啊adobe居然把Referer伪造给禁止了!!! ArgumentError: Error #2096: HTTP 请求标头 Referer 不能通过 ActionScript 设置.   at flash.display::Loader/flash.display:Loader::_load()   at flash.display::Loader/load()   at Timeline0_e150d995

  • ActionScript中文电子书(chm)文件下载

    ActionScript中文电子书. 学flash可得研究一下哦. 动作脚本字典概述 本字典描述 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的动作脚本元素的语法和用法.若要使用脚本中的示例,请复制本字典中的示例代码,然后将其粘贴到"脚本"窗格或外部脚本文件中.本字典列出了所有动作脚本元素,包括运算符.关键字.语句.动作.属性.函数.类和方法.有关所有字典条目的概述,请参见字典内容:若要查找其类未知

  • Flex include和import ActionScript代码

    在ActionScript中include和import有着截然不同的区别.Include是将一个文件中的代码拷贝到另一个文件中去,也就是将代码拷贝到include语句所在的位置上.Import是添加了对类或包的引用,这样你就可以访问其他的类中定义的对象和属性.通过import导入的代码文件必须存在于你导入的路径上.通过include导入代码文件,输入的文件地址必须与主文件要能在相对路径上寻找到,或者通过绝对路径也可以. 你可以在你的Flex应用程序中使用include语句和< mx:Scrip

  • 在Flex(Flash)中嵌入HTML代码或页面(Flex IFrame)

    在flex组件中嵌入html代码,可以利用flex iframe.这个在很多时候会用到的,有时候flex必须得这样做,如果你不这样做还真不行-- flex而且可以和html进行JavaScript交互操作,flex调用到html中的JavaScript方法以及获取调用后的返回值. 1.flex iframe下载地址:https://github.com/downloads/flex-users/flex-iframe/flex-iframe-1.5.1.zip 下载完成后目录如下  asdoc就

  • python各层级目录下import方法代码实例

    这篇文章主要介绍了python各层级目录下import方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 以前经常使用python2.现在很多东西都切换到了python3,发现很多东西还是存在一些差异化的.跨目录import是常用的一种方法,并且有不同的表现形式,新手很容易搞混.有必要这里做个总结,给大家科普一下: 1 同级目录下的调用: 同级目录下的调用比较简单,一般使用场景是不同类的相互调用.不用考虑路径问题,常用的格式是:from

  • vbscript include的办法实现代码第1/2页

    任何真正实用的工程开发都必然是多文件的.但是VBScript创建多文件工程要麻烦一点,它对多文件工程,代码复用的支持并不是太好.在C/C++工程里,我们已经习惯了通过一个include语句,并且声明一个函数原形的方式来使用其它模块中的函数,这样一个复杂的工程可以比较容易地分解成一些小的模块,以更容易理解和掌握.VBScript中情况有些不同.这与它的设计目标有关.最初VBScript是用在客户端脚本,以支持与客户端作简单的交互,如简单的输入检查等等.在浏览器里显然没有办法支持对另一个文件中的函数

  • JS实现完美include加载功能代码

    js为什么需要include?让我们想想这样1个场景,a.js 需要用到1个公用的common.js,当然你可以在用到a.js的页面使用<script src="common.js">,但假设有5个页面用到了a.js,你是不是要写5遍<script.而且要是以后a.js 又需要引用common2.js,你是不是又的修改5个页面了? 已有js include的一些问题 在写这个之前在网上搜索了些资料,发现以前写的include都存在2个问题,这也是include需要解决

  • Python 中包/模块的 `import` 操作代码

    用实例来说明 import 的作用吧. 创建以下包结构.一个文件夹 cookFish/,下面包含两个文件, __init__.py和cookBook.py. 为什么取这几个名字呢?假设我想用 Python 去做和鱼相关的菜,这件事情很复杂,所以我给它创建了一个包,名叫cookFish, 既然是包,在它下面必须得创建一个文件__init__.py.烧鱼必备条件之一就是菜谱,所以接着创建了 cookBook.py.这几个文件对我们这次来说就足够了,所以就没有再创建其他文件了. cookFish/ _

  • FCS中ActionScript代码提示功能

    在编写FlashCom代码的时候,如果经常使用合理的命名规范,可以很好的借用FlashMX 2004的代码提示功能.例如,在编写fcs代码的时候,对FlashCom中对象采用下面的命名方式,在编辑代码的时候在对象名称后面写完点号之后就会弹出代码提示,其中包含了该对象可以使用的属性和方法,很实用哦.各个对象的建议命名结尾字串 1 : _cam Camera对象2 : _video Video对象 3 : _mic Microphone对象4 : _so ShareObject对象 5 : _nc

  • flex 手写在线签名实现代码第1/2页

    在线手写签名分两部份.第一部分是画图功能的实现,第二部份是上传图片的功能(上传到服务器或保存到本地). 画图:画图比较简单,只要用到了graphics对像的几个方法.当鼠标按下时,调用graphics的beginFill和moveTo方法.同时,还要把调用了lineTo的方法加入到鼠标的MOUSE_MOVE事件中.代码如下: Actionscript代码 复制代码 代码如下: package com.humanmonth.home.component.page.signature { impor

  • Flex正则表达式判断中文或全角字符代码

    Flex中一文本框,其值的length取出的是字符个数,并不是字节长度,如果含有中文或者全角字符,一个字符是2个字节. 计算其字符长度, ActionScript代码 复制代码 代码如下: for(var i:int=0;i<newStr.length;i++){ var char:String = newStr.substr(i,1); if(/[^\x00-\xff]/g.test(char)){ //中文加10 screenLength = screenLength + 10; }else

  • JSP的include指令的使用方法

    JSP的include指令的使用方法 一 语法 <%@ include file="URL"%> 二 代码 1.date.jsp <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <%@ page import="java.text.*" %> &l

随机推荐