选择显示字体大小

fscommand与javascript通讯

本文所有权属于colin moock所有;
英文原版链接为:webdesign/flash/fscommand/">http://moock.org/webdesign/flash/fscommand/
由于水平有限,其中难免有误,请多多包涵!
如要转载请通知本站,谢谢合作!

目录:

fs command命令简介
对fs command命令的支持
通讯的两个方向
怎样实现flashjavascript的通讯
怎样实现javascriptflash 的通讯
可取的 flash javascript方法(未译)
相关内容参考(未译)


fs command命令简介

本文写作的目的就是主要用“fscommand”函数探讨flashjavascript之间的通讯的问题(flashweb浏览器中执行javascript声明)。但是,fscommand()函数的功能实际上要比这些强大得多。不用太多的细节描述,以下是fscommand()函数简短的概述:

“fscommand()”是flash中一个函数的名字,它提供flash 应用程序的通讯功能(“应用程序”的意思是任何可以播放flash媒体的工具,无论是自然的,例如标准的独立的flash player播放器;还是插件的使用,例如web浏览器)。例如,基于web的fscommand()函数可以响应flash按钮的click事件,执行javascript命令。(一会我们将看到javascript也可以控制flash影片的回放功能)。fscommand()函数也可以和lingo语言通讯,并且也可以发送内建的命令集到flash player播放器中(例如“quit”,“fullscreen”,“allowscale”,“showmenu”)。


对fs command命令的支持

好了,让我们回到主题:在web中使用fscommand()函数。如果你打算为web开发带有脚本的flash影片,你必须意识到不是所有的浏览器都支持fscommand()函数。支持该函数的特殊浏览器有:

.netscape 3 or 4 on win95/98/nt and mac ppc
·inte.net explorer 3 and greater on win95/98/nt
.netscape 6.2 (and later) running flash player 6.0.40.0 (and later)

特殊的不支持fscommand()函数的浏览器有:

·运行在 windows 3.1上的浏览器
·运行在 macintosh 68k 机器上的浏览器
·任何在mac上运行的ie
.netscape 6.1 和 6.0 运行 flash player 6.0.29.0 或者比较老的版本 (liveconnect 属性不支持mozilla遗留下来的插件。 使用mozilla需要更新插件,可以到这里去更新插件 mozilla plugin api). 察看 bugs 37710 和 18838.

不支持的浏览器缺少active x(ie)或者liveconnect.netscape 4和更老的版本),要实现在插件和浏览器之间的通讯这些是必需的。此外,对于flash 3,如果你正.netscape 4开发包含fscommand 的flash内容,你需要在每个页面明确的使用liveconnect来管理包含脚本的flash影片(你不必.netscape 6.2和以后的版本使用liveconnect)。对于支持liveconnect的浏览器,应把这一属性包含在你的影片的embed 标签中,例如 swliveconnect = “true”。 在执行的过程中,用户将.netscape状态栏中看到 ”starting java…”,并且当java加载时要等待一会。


通讯的两个方向

那么现在,我们知道了在哪里可以使用fscommand函数的功能;你也许想知道它是怎样工作的。我们首先检测基于fscommand功能的flashjavascript的通讯。然后,我们将再看看发送信息的另一种方法:javascriptflash的通讯。


怎样实现flashjavascript的通讯

(在研究用fscommand()函数执行javascript代码之前,应该注意的是javascript也可以通过geturl()函数来调用,就象用锚标记<a>调用javascript一样)。geturl()函数与fscommand()函数相比,会获得更广泛的浏览器的支持,暂且不提它为编码带来的便利。要了解更多的信息,参考用javascript调用geturl函数来开启一个窗口。现在让我们回到对fscommand()函数的讨论中)。

无论fscommand()函数是否执行,flash都试图发送消息给javascritp。当浏览器收到一个来自flash的fscommand命令,它会检测:是否存在一个与之匹配的javascript函数(或者ie浏览器中vb script函数),该函数可以“捕获”fscommand命令。如果存在这样的函数,浏览器将执行这个“捕获”函数,并且发送两个参数给这个函数——这两个参数就是fscommand() 函数中“command”和“arguments”参数。

如下所示得图表图解了这个过程,该范例用fscommand()函数来调用javascript警告框。fscommand的参数是”call_alert”和”hello world!”,

如下所示:

fscommand(“call_alert”, “hello world!”);

执行这个fscommand命令.netscape和ie中有略微不同;下面的图示显示了该命令在两个浏览器中的传递(从flashjavascript)。图示下面是相应的flash范例,看看这个模型,我们接来就分析实现这一功能的细节。

观看演示

fs command影片范例:flash调用javascript警告框

让我们一起完成如上图所示的flash调用javascript的fs command方法。你可以下载这个范例1的zip文件,它包括.fla,.swf和.html格式文件。具体操作如下(请注意:以下操作均在 flash mx professional 2004中进行):

1)在flash中建立fs command语句:

·新建一个影片,在时间线上开始的几桢上随意设置一个关键桢;

·选中该关键桢,按f9,打开动作面板;

·在动作面板中点击“动作”下面的“+”按钮,选择“全局函数”---“浏览器/网络”---fscommand()函数。然后,“fscommand”命令便加入到动作列表中。该函数参数包括两个部分“command”和“arguments”。这两个参数将被传递到javascript的“fscommand捕获”函数中。它们可以用在任何条件下,但是通常情况下,command参数包含一个你想执行的函数名称;arguments参数包含你提供的参数;

·在括号中输入“&quot;call_alert&quot;, &quot;hello world!&quot;”;

2)把你的影片嵌入到html文档中:

为你的影片建立一个html文档,并且使用object 和embed标记放置你的影片。在object 和embed标记中,确定你影片的名字,为object标记使用”id”,为embed标记使用”name”。影片的名字是非常重要的,因为这个名字将被object 和embed标记识别出来。你的fs command捕获函数将依靠影片的名字来识别所有捕获的fs command命令。另外要记住的是对.netscape浏览器的liveconnect参数用“swliveconnect = “true””来替换。你的页面应该象下面这样(id、name和swliveconnect都加粗了,不要忘记它们):

<html>

<head>

<title>my first fs command</title>

</head>

<body>

<object

classid=&quot;clsid : d27cdb6e-ae6d-11cf-96b8-444553540000&quot;

width=&quot;100%&quot;

height=&quot;100%&quot;

codebase=&quot;flash/swflash.cab#version=6,0,29,0">http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot;

id=testmovie>

<param name=&quot;movie&quot; value=&quot;mymovie.swf&quot;>

<param name=&quot;play&quot; value=&quot;true&quot;>

<param name=&quot;loop&quot; value=&quot;true&quot;>    

<param name=&quot;quality&quot; value=&quot;high&quot;>

<param name=&quot;scale&quot; value=&quot;showall&quot;>

<embed

name=&quot;testmovie&quot;

src=&quot;mymovie.swf&quot;

width=&quot;100%&quot;

height=&quot;100%&quot;

play=&quot;false&quot;

loop=&quot;false&quot;

quality=&quot;high&quot;

scale=&quot;showall&quot;

swliveconnect=&quot;true&quot;

pluginspage=&quot;flashplayer">http://www.macromedia.com/go/getflashplayer&quot;>

</embed>

</object>

</body>

</html>

3)为ie浏览器加入vb script代码:

还记得在图示1中的第2个场景吗?ie浏览器使用很小的vb script代码来捕获fscommand命令,然后把它传递给javascript。这就是接下来你要做的。把如下的vb script代码放在html文档的head标记内,确定把文字“testmovie”改为你在object 和embed标记为你的影片起的名字。

<script language=&quot;vbscript&quot;>

<!--

// catch fs commands in ie, and pass them to the corresponding javascript function.

sub testmovie_fscommand(byval command, byval args)

call testmovie_dofscommand(command, args)

end sub

// -->

</script>

4)加入javascript函数来捕获fscommand命令:

到目前为止,我们已经建立了影片,它可以发送fscommand命令到浏览器上;影片也已经被嵌入到html页面中,也建立了vb script代码,它可以为javascript捕获fscommand命令——如果你的浏览器是ie的话。把如下的javascript代码放到head标记中,确定把文字“testmovie” 改为你在object 和embed标记为你的影片起的名字。

<script language=&quot;javascript&quot;>

<!--

function testmovie_dofscommand(command, args) {

if (command == &quot;call_alert&quot;) {

alert(&quot;here's the flash message: &quot; + args);

}

}

//-->

</script>

对于javascript的一点解释。“testmovie_dofscommand”函数随时调用名称为“testmovie”的发送fscommand命令的影片。“dofscommand” 关键字是flash用来识别的函数,该函数被fscommand命令加载。前缀“testmovie_”指出被命令调用的影片的名称。因此,当一个名为“testmovie”的影片调用fs command命令时,名为“testmovie_dofscommand”的函数将被加载。“(command, args)”是传递给函数的两个参数,并传送我们在flash动作面板输入的 “command”和“arguments”的参数值——“call_alert”和“hello world!”

一旦你的javascript函数放置好了,你的fs command函数就可以成功的加载警告框了。

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons