关于As3的flash文件调用As2影片的一些问题

之前忘记记录了,用了这个方法后,单个机器只能打开一个这样的flash文件组,如果在另外一个浏览器(或窗口)弹出就会失效…

案例情况是存在3个swf文件

main.swf(as3)

mask.swf(as2)

reg.swf(as3)

main会导入mask和reg,并会对mask添加一个点击事件让reg弹出。

mask里面本身有部分互动。

问题:

在main调用mask后,发现所有mask里面所有含有事件的元件(包括没有事件的按钮元件)覆盖的范围,都没有main给mask注册的点击效果。但是如果用as3代码写就可以~

因为以后可能有很多这样的东西,所以转as2为as3不够现实,只能想其他办法来解决。

最终方案:

让As2回调As3的函数,实现reg的弹出效果。

具体代码(供参考):

main.swf里面加上如下代码
var localConnection:LocalConnection;
localConnection = new LocalConnection();
localConnection.client = this;//创建本地连接
localConnection.connect("AS3Connection");//参数是接口,根据需要起名字

function As3Action(){
    //as2里面要调用的函数和内容
}

mask.swf所有含有事件的元件(包括没有事件的按钮元件)增加点击事件,并包含如下代码:

var localConnection:LocalConnection = new LocalConnection();
localConnection.connect("AS2Connection");
localConnection.send("AS3Connection","As3Action");

就可以实现main里面需要做的动作了~

关于div遮盖flash的问题总结

首先说ff和chrom,这两个浏览器实际上是可以根据正常逻辑解决遮盖问题,所以一般来说正常操作就好。

兼容上主要是ie产生的问题。当flash的wmode属性为Transparent 问题并不是很大,一般逻辑仍然能解决。

但是如果你引用的flash没写参数,或者参数不是Transparent的时候,ie就会认为flash在最上面。

ps:一些flash的wmode必须使用window属性,以保证输入法和flash的速度。

解决方法:

iframe>flash一句话解决问题。

只要在flash和div中间再加一个iframe就可以解决覆盖的问题。

但是有个问题需要注意,iframe遮在flash上面的效果是,iframe与flash交叉的部分会透明掉。

也就是说你的div必须是个矩形,如果是个不规则图形,flash上会有透明的地方。

情况就是这样,希望对你有帮助。

Flash支持的HTML标签有哪些

一、Flash 8 支持的HTML标签和用法

(1)Flash 8 支持的HTML标签
1、<a> 超链接标签
属性:
href—— 链接地址
target——目标窗口,可取值为_blank,_parent,_self,_top
例:
my_txt.htmlText=”<a href=http://hi.baidu.com/kmjy/creat/blog/’ target=’_blank’>开明教育</a>”

2、<b> 粗体标签
|例:
my_txt.htmlText=”<b>粗体</b>”

3、<br> 换行标签
例:
my_txt.htmlText=”第一行<br>第二行”

4、<font> 字体标签
属性:
color——字体颜色,格式#RRGGBB
face——字体,可以是单个字体或字体列表,字体名称
size——字体大小,单位像素,数字
例:
my_txt.htmlText=”<font color=’#ff0000′ face=’Arial’ size=’12′>用HTML字体标签的效果</font>”

5、<i> 斜体标签
例:
my_txt.htmlText=”<i>这里是斜体</i>”

6、<li> 列表项标签
例:
my_txt.htmlText=”Sports:<li>列表项一</li> <li>列表项二</li><li>列表项三</li>”
注意,文本属性要选中“多行”。
不支持<ol> 和<ul>标签

7、<p> 段落标记
属性:
align——对其方式,可取值left、right、center
class——应用一个css样式类
例:
my_txt.htmlText=”<p align=’right’ class=’title’>右对齐</p><p align=’left’ class=’body’>左对齐</p>”
注意,文本属性要选中“多行”。本例假设css类title和body已存在。

8、<span> 标签
说明:对位于该标签内所有文本应用css样式,只有在定义了css对象后有效。
属性:class——应用一个css样式类。
例:
my_txt.htmlText=”<span class=’body’>应用CSS样式类</span>
注意,本例假设css类body已存在。

9、<u> 下划线标签
例:
my_txt.htmlText=”<u>添加下划线</u>

两个特殊的标签:
10、<img> 图像标签
说明:这个标签的功能不仅仅是在文本框中插入图片,还可以插入SWF和MovieClip。
属性:
src—— 要加载的JPG或SWF的URL,或是MC的链接ID,这个属性是必要的,其他属性则可选。
注意:Flash不支持progressive格式的JPG。
id——指定嵌入了JPG,SWF或MovieClip的电影剪辑的名称。
width——图片/动画宽度。
height——图片/动画高度。
align——对其方式,可取值:left,right,默认为left。
hspace——文本环绕图时水平方向上与图片的空隙。
vspace——文本环绕图时垂直方向上与图片的空隙。

11、<textformat> 文本格式标签
说明:这个标签可以让你直接应用一些TextFormat对象的属性到文本中。
属性:
blcokIndent: 段落缩进大小,单位像素。
indent: 段落首行缩进大小,单位像素。
leading: 文本行间距,单位像素。
leftmargin: 文本左边距,单位像素。
rightmargin: 文本右边距,单位像素。
tabstops: 表格划分,单位像素。
注意:关于属性tabstops:它的值是一个数组,用来表示表格的列划分情况。
在文本中用转义字符\t将输出位置移动到下一个制表位。
例:
tabField=”<b>姓名\t性别\t年龄\t</b><br>”;
tabRecord1=”唐家齐\t男\t21\t<br>”;
tabRecord2=”张晓明\t女\t18\t<br>”;
txt=”<textformat tabstops=’[50,150,150]‘>” + tabField + tabRecord1 + tabRecord2 + “</textformat>”;

(2)在 Flash 8 如何使用HTML标签

第一步:新建 Flash 文档,在舞台上创建一个动态文本框,设定实例名称为my_txt 。
第二步:在第一帧加入AS代码:
my_txt.html = true; //指定该文本字段为HTML文本字段。
my_txt.htmlText= “<a href=’http://hi.baidu.com/kmjy/creat/blog/’ target=’_blank’>开明教育</a>”; //引用HTML的超链接标签。

Flash CS3里可用的HTML标签和注意事项
Adobe Flash播放器支持一组标准HTML标签, 例如<p>和<li>, 你可以把它们放在动态或输入框文本区内来格式化文字.

Flash播放器版本7和后续版本也支持<img>标签. 你可以在文本区嵌入图片(JPEG,GIF,PNG)和SWF文件.

Flash播放器自动把文字环绕在图片周围, 就像浏览器显示HTML页面时把文字环绕在图片周围那样.
Adobe Flash Player supports a subset of standard HTML tags such as <p> and <li>, which you can use to style text in any dynamic or input text field. Text fields in Flash Player 7 and later also support the <img> tag, which lets you embed image files (JPEG, GIF, PNG), SWF files, and movie clips in a text field. Flash Player automatically wraps text around images embedded in text fields in much the same way that a web browser wraps text around embedded images in an HTML page.

HTML tags supported by Adobe Flash CS3 Professional
The following HTML tags are supported by Adobe Flash CS3 Professional. Optional tag attributes appear in brackets.

引用内容 引用内容Anchor: <a href=”/support/flash/ts/documents/url”>
Bold: <b>
Font: < font [color=”#xxxxxx”] [face=”Type Face”] [size=”Type Size”]>
Italic: <I>
Paragraph: <p [align=”left”|”right”|”center”]>
Underline: <u>
Break: <br>
Image: <img src=”/images/flash/dogs.jpg”/> The <img> tag lets you embed external image files (JPEG, GIF, PNG), SWF files, and movie clips inside text fields and TextArea component instances.
List Item: <li>

 

ordered and unordered lists (<ol> and <ul> tags) are not recognized by Flash Player, so they do not modify how your list is rendered. All list items use bullets.
Span: The <span> tag is available only for use with CSS text styles.
TextFormat: The <textformat> tag lets you use a subset of paragraph formatting properties of the TextFormat class within HTML text fields, including line leading, indentation, margins, and tab stops. You can combine <textformat> tags with the built-in HTML tags.
引用内容 引用内容Additionally, Flash Player supports HTML entities:

< < (less than)
> > (greater than)
& & (ampersand)
” ” (double quotes)
&apos; ‘ (apostrophe, single quote)

程序代码 程序代码
如何使用Flash MX 2004所支持的HTML标签:
第一步:新建一个FLASH文档,在舞台上插入一个动态文本框,并命名为 my_txt 。
第二步:在第一帧加入AS代码:
my_txt.html = true; //指定该文本字段为HTML文本字段。
my_txt.htmlText=”<a href=’http://www.flash8.net’ target=’_self’>闪吧</a>”;
//引用HTML的超链接标签。
Flash MX 2004所支持的HTML标签:
<a> 超链接标签
属性:href: 链接地址
target: 目标窗口 可取值为_blank,_parent,_self,_top。
例:
my_txt.htmlText=”<a href=’http://www.flash8.net’ target=’_self’>闪吧</a>”;
<b> 粗体标签
例:
my_txt.htmlText=”<b> 闪吧</b>”;
<br> 换行标签
例:
my_txt.htmlText=”闪吧<br>”;
<font> 字体标签
属性:color:字体颜色,格式#RRGGBB。
face:字体,可以是单个字体或字体列表。
size:字体大小,单位像素。
例:
my_txt.htmlText=”<font color=’#ff0000’ face=’Arial’ size=’12’>闪吧</font>”;
<i> 斜体标签
说明:
例:
my_txt.htmlText=”<i>闪吧</i>”;
<li> 列表项标签
例:
my_txt.htmlText=”Sports:<li>新手区</li> <li>教程区</li><li>资源区</li>”;
注意,文本框要选中“多行”。
<p> 段落标记
属性:align:对其方式,可取值left,right,center。
class:应用一个css样式类。
例:
my_txt.htmlText=”<p align=’right’ class=’title’>align right</p><p align=’left’ class=’body’>align left</p>”;
注意,文本框要选中“多行”。本例假设css类title和body已存在。
<span> 标签
说明:对位于该标签内所有文本应用css样式,只有在定义了css对象后有效。
属性:class:应用一个css样式类。
例:
my_txt.htmlText=”<span class=’body’>闪吧</span>”;
注意,本例假设css类body已存在。
<u> 下划线标签
例:
my_txt.htmlText=”<u> 闪吧</u>”;
<img> 图像标签
说明:这个标签的功能不仅仅是在文本框中插入图片,还可以插入SWF和MovieClip。
属性:src: 要加载的JPG或SWF的URL,或是MC的链接ID,这个属性是必要的,其他属性则可选。
注意:Flash不支持progressive格式的JPG。
id : 指定嵌入了JPG,SWF或MovieClip的电影剪辑的名称。
width: 图片/动画宽度。
height: 图片/动画高度。
align: 对其方式,可取值:left,right,默认为left。
hspace: 文本环绕图时水平方向上与图片的空隙。
vspace: 文本环绕图时垂直方向上与图片的空隙。
例:
my_txt.htmlText=”<src=’my.swf’ width=’100’ height=’80’ align=’left’>”;
<textformat> 文本格式标签
说明:这个标签可以让你直接应用一些TextFormat对象的属性到文本中。
属性:blcokIndent: 段落缩进大小,单位像素。
indent: 段落首行缩进大小,单位像素。
leading: 文本行间距,单位像素。
leftmargin: 文本左边距,单位像素。
rightmargin: 文本右边距,单位像素。
tabstops: 表格划分,单位像素。
注意:关于属性tabstops:它的值是一个数组,用来表示表格的列划分情况。
在文本中用转义字符 将输出位置移动到下一个制表位。
例:
tabField=”<b>name Sex Age </b><br>”;
tabRecord1=”rongsheng 20 Male <br>”;
tabRecord2=”zjq 21 Female <br>”;
txt=”<textformat tabstops=’[50,150,150]’>”+ tabField+tabRecord1+tabRecord2+”</textformat>”;

【转】flash读取html

正常情况下,flash文本框显示的都近似于纯文本,比如你不能在一个动态文本框中显示不同的字号、字体和字色,更不用说在文本框中显示图片。改变这种单调面貌的一个办法就是使用flash的读取html格式文本的功能。

1、文本字段如何显示html文本

首先开启将文本呈现为 HTML功能:

文本框实例名.html = true;

然后使用htmlText属性接收html文本:

文本框实例名.htmlText=”此处是带有html标签或属性的文本”

实例1:

舞台上放一个动态文本框,实例名mytxt,时间轴第一帧写代码:

mytxt.html=true;

mytxt.htmlText=”<font color=’#ff6600′>这里是演示用的文字,它将按照html要求显示。</font>”

测试可看到效果。

//帮助文档中说:htmlText 属性文本字段支持以下 HTML 标记:abfont colorfont facefont sizeipu。此外,支持下列 HTML 属性:leftmarginrightmarginalignindentleading。 要应用这些属性,请使用 TextFormat 类或层叠样式表。有关详细信息,请参阅”学习 Flash 中的 ActionScript 2.0″中的以及”ActionScript 2.0 语言参考”中的”TextFormat 类”或”TextField.StyleSheet 类”。

 

2、通过loadvars对象读取外部html文档:

以下示例,我用TextArea组件代替动态文本框来显示读取到的html文档内容。

实例2:

var content_txt:mx.controls.TextArea;
//content_txt.multiline = true;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“http://www.china.com.cn/news/txt/2009-06/17/content_17961878.htm“);

//以上例子载入了一个网络上的html页面,在flash内测试,即按下Ctrl+Enter键进行测试,效果如下图:

但是输出swf文件无法载入,上传空间也无法载入,看来和载入txt文本不同,载入html时会受flash的安全模型限制。

如果是html文档和swf文档在同一文件夹下,访问则没有任何问题,看下面实例:

实例3:

 

//————————————–flash脚本:————-

var content_txt:mx.controls.TextArea;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“t.html”);

//——————–t.html文档保存在和swf在同一文件夹下,内容为:

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8″/>
<title> 律师称邓玉娇未决定是否上诉 法学家就此案答问_中国网</title>
<meta name=”keywords” content=” 邓玉娇 汉大赋 上诉 此案 答问 认定被告人 法学家 故意伤害罪 刑法 防卫行为” /><body><font color=”#ff6600″>巴东县人民法院认为,邓玉娇在遭受邓贵大、黄德智无理纠缠、拉扯推搡、言词侮辱等不法侵害的情况下,实施的反击行 为具有防卫性质,但超过了必要限度,属于防卫过当。被告人邓玉娇故意伤害致人死亡,其行为已构成故意伤害罪。案发后,邓玉娇主动向公安机关投案,如实供述 罪行,构成自首。经法医鉴定,邓玉娇为心境障碍(双相),属部分(限定)刑事责任能力。据此,依法判决对邓玉娇免予刑事处罚。</font>
</body>
</html>

//————————————-swf输出效果:—————————

3、使用外部css样式表的方法:

flash脚本:

//===================使用外部样式表========================================
var myStyle:TextField.StyleSheet = new TextField.StyleSheet();
myStyle.load(“ys.css”);
content_txt.styleSheet = myStyle;
//=============================================================
var content_txt:mx.controls.TextArea;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“t.html”);

//==================================外部样式表文件ys.css:

body {
font-family: Arial,Helvetica,sans-serif;
font-size: 16px;
font-weight: bold;
display: block;
}
//=============自己还可以继续编辑更多的样式设置

4、将文本呈现为html的好处。

从上面的截图效果可以看出,开启了html功能后,文本显示出来的格式丰富了,可以给文本中的任一处文字随意改变颜色,字体等,还可以在文本内容中显示图片。这是纯文本格式所不能比的。

如果我们想使flash文本框中的内容格式丰富多彩,使用html格式是很好的办法。

我想可以在dw的设计视图下设置好一篇文章的格式,然后从代码视图下得到它的html格式文本,进而在flash中显示html,以使flash文本格式丰富多彩。

flash+txt教程 As2

想从外部文件(例如文本文件,或由 ColdFusion、CGI 脚本、ASP、PHP 或 Perl 脚本生成的文本)中读取数据,并设置 Flash Player 的某个级别中的变量的值。我们一般要用到
指 定的 URL 处的文本必须为标准的 MIME 格式 application/x-www-form-urlencoded(CGI 脚本所使用的一种标准格式)。可以指定任意数量的变量。例如,下面的代码定义了多个变量:loadVariablesNum 函数 和loadVariables 函数
loadVariablesNum 函数
loadVariablesNum(url:String, level:Number, [method:String]) : Void此函数还可用于使用新值更新活动 SWF 文件中的变量。
参数
url:String – 变量所处位置的绝对或相对 URL。如果发出此调用的 SWF 文件正在 Web 浏览器上运行,则 url 必须与 SWF 文件位于同一个域中;有关详细信息,请参见”说明”部分。
level:Number – 一个整数,指定 Flash Player 中接收这些变量的级别。
method:String [可选] – 指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量附加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送长字符串的变量。
loadVariables 函数
loadVariables(url:String, target:Object, [method:String]) : Void
参数
url:String – 变量所处位置的绝对或相对 URL。如果发出此调用的 SWF 文件正在 Web 浏览器上运行,则 url 必须与 SWF 文件位于同一个域中;有关详细信息,请参见”说明”部分。
target:Object – 指向接收所加载变量的影片剪辑的目标路径。
method:String [可选] – 指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量附加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送长字符串的变量。
如果要将变量加载到目标影片剪辑中,请使用 loadVariables() 而不是 loadVariablesNum()。
了解了这两个函数后我们就可以用它实现载入外部TXT文件。
准备工作:
创建一个文本文件t.txt,内容是t=xxxxxxxxxxxxxxxxxxxxxx。
(注意:“=”前后不能有空格。)
示例:t=这正在制作载入外部TXT文本文件的效果
FLASH部分:
这里直接在_root里创建文本域content_txt,使用loadVariables()方法。
System.useCodepage = true;
createTextField(“content_txt”,0,0,0,200,0);
/*创建一个新文本字段的深度为0 x 坐标为0 y 坐标为0字段的宽度为200字段的高度为0的content_txt /*
content_txt.wordWrap = true;
content_txt.variable = “t”;
content_txt.autoSize = “left”;
content_txt.selectable = false;
loadVariables(“t.txt”, _root);
装载t.txt后,其t的内容自动赋值给_root.content_txt的变量t。
这种方法不需要在场景内建立任何动态文本框。加载t.txt中T的内容直接显示在主场景上

Flash是支持少量的html语法的。
如果你对html语法不太熟悉的话,先用网页制作工具frontpage等建一个简单的文本,
在普通页面里给它加上超连接、字体颜色、下划线等非常简单。
frontpage里html显示如下:<p align=left><font color=’#FF6699′>载入TXT实验</font></p>
给变量t赋值如下:
t = “<p align=left><font color=#FF6699>载入TXT实验</font></p>\r\n
<p>***********************************************************************************。</p>\r\n
<p align=right><a href=http://www.578453175.com/>
<font color=#008080><u>转载网址</u></font></a></p>”

FLASH的AS:
在主场景第一帧上:
loadVariablesNum(“t.txt”, 0); //把t.txt载入进FLASH
在第二帧上:
t.htmltext = t;
stop();
同时把实例名为T的动态文本框加入些帧(在flash里建动态文本框,实例名为t。设置多行显示,把html等4个选项的勾全选。 )
这样,FLASH就能够把简单的HTML代码所标识的效果反映出来。
上 面几节flash+txt教程我们了解了FLASH怎么调用外部的TXT文本文件,这样更新网站内容时,只需打开这个TXT更改内容就可以了。但是我们需 要把TXT文件打开才能更改,有没有办法在后台里直接更新TXT文本内容呢,或者直接用FLASH来生成这个TXT。这节我教大家用FLASH通过ASP 直接生成TXT的文本文件。(可用于制作留言本)

准备工作:
1、一个ASP文件用于写入数据的用途:guest.asp
<%
subject = request(“sub”)
name = request(“name”)
text = request(“text”)
action = request(“action”)

if (action <> “add”) then

set fin = Server.CreateObject(“Scripting.FileSystemObject”)
filepath = Server.MapPath(“guest.txt”)
set f = fin.OpenTextFile(filepath)
buf = f.readAll
response.write(buf)

f.close
end if

if (action = “add”) then

set fin = Server.CreateObject(“Scripting.FileSystemObject”)
filepath = Server.MapPath(“guest.txt”)
set f = fin.OpenTextFile(filepath)
line = f.readline
total = int(mid(line,8))

buf = f.readAll

f.close

set fout = Server.CreateObject(“Scripting.FileSystemObject”)

Application.lock

filepath = Server.MapPath(“guest.txt”)
set f = fout.CreateTextFile(filepath,TRUE)

total = total + 1
f.writeline “&total=”&total
f.writeline “&sub”&total&”=”&subject
f.writeline “&name”&total&”=”&name
f.writeline “&text”&total&”=”&text
f.write buf

f.close

Application.unlock

response.write(“&added=1”)
end if
%>

2、文本文件(数据库用途)guest.txt
内容:
&total=0
先定义数据为0
FLASH部分:
我们创建三个数据写入TXT,分别是:sub(主题),name(名字),text(内容);然后total数据自动增加.
在FLASH里的第一帧,我们先把这些数据初始化,并调用ASP文件读取TXT里的数据。
在第一帧上写:
total = 0;
added = 0;
sub = “”;
name = “”;
text = “”;
backmethod = 0;
r = random(65500);
loadVariables(“guest.asp?action=” add r, “”);

在第二帧上:
接着我们创建几个输入文本框,把要创建的数据提交上去
变量名为sub的输入文本框
变量名为name的输入文本框
变量名为text的输入文本框
一个提交按钮,提交钮
on (release) {
gotoAndPlay(“do_insert”);
}
把过程交给帧实例名为do_insert的去处理,当然你也可以直接提交处理,但这样看起来清楚些。
在第三帧上:
if ((sub eq “”) or (name eq “”) or (text eq “”)) { //判断各项数据填写是否为空
gotoAndPlay(“error”);//填写为空的话就转到帧实列名为error的处理效果
} else {
temp = “正在向服务器添加数据……”;//或者动态文本text里出现提示语
loadVariables(“guest.asp?action=add”, “”, “POST”);
gotoAndPlay(“wait2”);//转到帧实列名为wait2的处理效果
}
并对该帧命名为do_insert,在此帧上创建一个动态文本,变量命为text。
在第四帧上创建ERROR错误出现效果,在第五帧上创建WAIT2等待写入的效果。
这样,就完成了,用FLASH生成一个叫guest.txt的文件的效果,并且每次写入新信息,会在该txt文件里加一条新的信息。

Flash Player 与 HTML 容器之间发送数据的过程演示

以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。package {
import flash.display.Sprite;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.utils.Timer;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;

public class ExternalInterfaceExample extends Sprite {
private var input:TextField;
private var output:TextField;
private var sendBtn:Sprite;

public function ExternalInterfaceExample() {
input = new TextField();
input.type = TextFieldType.INPUT;
input.background = true;
input.border = true;
input.width = 350;
input.height = 18;
addChild(input);

sendBtn = new Sprite();
sendBtn.mouseEnabled = true;
sendBtn.x = input.width + 10;
sendBtn.graphics.beginFill(0xCCCCCC);
sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10);
sendBtn.graphics.endFill();
sendBtn.addEventListener(MouseEvent.CLICK, clickHandler);
addChild(sendBtn);

output = new TextField();
output.y = 25;
output.width = 450;
output.height = 325;
output.multiline = true;
output.wordWrap = true;
output.border = true;
output.text = “Initializing…\n”;
addChild(output);

if (ExternalInterface.available) {
try {
output.appendText(“Adding callback…\n”);
ExternalInterface.addCallback(“sendToActionScript”, receivedFromJavaScript);
if (checkJavaScriptReady()) {
output.appendText(“JavaScript is ready.\n”);
} else {
output.appendText(“JavaScript is not ready, creating timer.\n”);
var readyTimer:Timer = new Timer(100, 0);
readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
readyTimer.start();
}
} catch (error:SecurityError) {
output.appendText(“A SecurityError occurred: ” + error.message + “\n”);
} catch (error:Error) {
output.appendText(“An Error occurred: ” + error.message + “\n”);
}
} else {
output.appendText(“External interface is not available for this container.”);
}
}
private function receivedFromJavaScript(value:String):void {
output.appendText(“JavaScript says: ” + value + “\n”);
}
private function checkJavaScriptReady():Boolean {
var isReady:Boolean = ExternalInterface.call(“isReady”);
return isReady;
}
private function timerHandler(event:TimerEvent):void {
output.appendText(“Checking JavaScript status…\n”);
var isReady:Boolean = checkJavaScriptReady();
if (isReady) {
output.appendText(“JavaScript is ready.\n”);
Timer(event.target).stop();
}
}
private function clickHandler(event:MouseEvent):void {
if (ExternalInterface.available) {
ExternalInterface.call(“sendToJavaScript”, input.text);
}
}
}
}为了测试前面的 ActionScript 代码,请使用以下 HTML 模板嵌入生成的 SWF 文件: <!– saved from url=(0014)about:internet –>
<html lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>ExternalInterfaceExample</title>
<script language=”JavaScript”>
var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
document.forms[“form1”].output.value += “\n” + “JavaScript is ready.\n”;
}
function thisMovie(movieName) {
if (navigator.appName.indexOf(“Microsoft”) != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function sendToActionScript(value) {
thisMovie(“ExternalInterfaceExample”).sendToActionScript(value);
}
function sendToJavaScript(value) {
document.forms[“form1”].output.value += “ActionScript says: ” + value + “\n”;
}
</script>
</head>
<body onload=”pageInit();”>

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
id=”ExternalInterfaceExample” width=”500″ height=”375″
codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab”>
<param name=”movie” value=”ExternalInterfaceExample.swf” />
<param name=”quality” value=”high” />
<param name=”bgcolor” value=”#869ca7″ />
<param name=”allowScriptAccess” value=”sameDomain” />
<embed src=”ExternalInterfaceExample.swf” quality=”high” bgcolor=”#869ca7″
width=”500″ height=”375″ name=”ExternalInterfaceExample” align=”middle”
play=”true” loop=”false” quality=”high” allowScriptAccess=”sameDomain”
type=”application/x-shockwave-flash”
pluginspage=”http://www.macromedia.com/go/getflashplayer”>
</embed>
</object>

<form name=”form1″ onsubmit=”return false;”>
<input type=”text” name=”input” value=”” />
<input type=”button” value=”Send” onclick=”sendToActionScript(this.form.input.value);” /><br />
<textarea cols=”60″ rows=”20″ name=”output” readonly=”true”>Initializing…</textarea>
</form>

</body>
</html>