Ajax Framework
前者实现了windows下大部分控件的功能(网格,树,工具条等等),后者是图形表示上的扩充(图表,地图,流程图等等)。非常强大的Ajax框架,是商业软件。
[tags]ajax, javascript, framework[/tags]
前者实现了windows下大部分控件的功能(网格,树,工具条等等),后者是图形表示上的扩充(图表,地图,流程图等等)。非常强大的Ajax框架,是商业软件。
[tags]ajax, javascript, framework[/tags]
实现Deeplink功能的解决方案,核心方法没变(参看:整合了浏览器功能的Flash导航),只不过用javascript和actionscript封装了一下,方便使用。
ExternalInterface (flash.external.ExternalInterface)是Flash 8新增的外部API。用于Flash影片和Flash播放器容器直接通讯的一个通用应用程序接口。典型的Flash Player容器就是使用Javascript的html页面或者是内置了Flash Player的应用程序。使用这个类进行通讯的方法将代替以前fscommand()或者Macromedia Flash/JavaScript Integration Kit。
public static addCallback(methodName:String, instance:Object, method:Function) : Boolea
调用ExternalInterface类的addCallback()静态方法建立一个对外公开的Flash内部函数。methodName就是对外可见的函数名。instance和method则是as对象以及该对象的方法。若在网页中,必须先得到Flash Player的引用:
More...
The JavaScript and Flash Integration Kit是MM的Mike Chambers和Christian Cantrell开发的一套用于Javascript和Flash通讯的通用接口程序。通过这套接口,两种语言的大部分数据类型能够被相互支持。之前JS与Flash通讯的方法是通过fsCommand(),这一套程序用到了flash中的LocalConnection对象,支持主流的浏览器平台。
安装和使用方法在配套的文档中已经说得比较清楚了,我这里只是提一些要点。安装文件中JavaScriptFlashGateway.swf就是这套接口能够正常运作的幕后功臣,其作用就是发送基于LocalConnection对象的指令来操作目标Flash。
看看使用这套接口的基本代码,在html页头部加入:
<script type="text/javascript" src="/path/to/JavaScriptFlashGateway.js"></script>
生成一个id值,建立提供接口服务的FlashProxy对象:
More...
FlashObject: Javascript Flash detection and embed script
包含了Flash插件的检测和符合xhtml规范的插入脚本。
作者还详细比较了几种插件检测和Flash插入网页的方法:
(1)Dreamweaver默认提供的方法没有插件检测功能,同时<embed>也不符合xhtml标准。
(2)仅使用Object标签和一种叫做"Flash satay"的方法。没有插件检测,"Flash satay"插入的Flash还没有了流的特性(就是必须完全下载完才会显示出来)
(3)在首页使用专门检测Flash版本的Flash文件,再进行相应导向的方法。在其它页面上没有插件或版本的检测,用户可能url地址跳过首页的检查。同样不符合xhtml标准。还不容易被搜索引擎得到。
(4)The Macromedia Flash MX 2004 Detection Kit,仅是上一种方法的规整版本,有同样的局限性。
(5)使用JS来检测和插入Flash动画。代码量大,设计师使用比较困难。而且一般写得不够灵活。就像我之前提到的方法。
这个FlashObject其实也就是最后一种方法,只不过封装了更多的功能,使用起来更加简便而已。
More...
全Flash的网站在导航上存在一个问题:浏览器提供的前进和后退等浏览历史相关的功能不能整合到Flash站点中。
FI解决了这个问题。FlashGuru在FlashForward 2005上也提到了这个问题的解决办法。
在这里总结一下。原理就是使用框架网页,将主Flash文件(如main.swf)放在主框架(如content.htm)中,另一个框架文件(如history.htm)用来记录浏览历史。要解决的两个问题:
不直接在Flash中更新页面内容,而是等到框架页加载后再来更新。这样无论是用户在网站中通过导航发生页面跳转还是使用浏览器的前进或后退功能都可以对应到正确的Flash内容。
原理弄清楚就好办了。第一个问题,在main.swf文件用getURL("history.htm?param=value", "history")来更新history.htm。第二个问题,history.htm刷新后必须把得到的参数再对应回main.swf。最简单的办法是用到localConnection对象。这个对象可以在不同的Flash之间通讯,而不需要通过fscommand()或者Javascript。在history.htm中放一个history.swf,得到网页参数后通过localConnection对象来与main.swf通讯。
这样,一个整合了浏览器功能的Flash导航就搞定了。具体的代码可以从FlashGuru那里下来研究。
在<head>块中加入
<script language="JavaScript" type="text/JavaScript">
function writeFlash(swf, w, h, fv) {
document.write("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" width=\"" + w + "\" height=\"" + h + "\">");
document.write("<param name=\"allowScriptAccess\" value=\"sameDomain\" />n");
document.write("<param name=\"movie\" value=\"" + swf + "\" />");
document.write("<param name=\"quality\" value=\"high\" />");
document.write("<param name=\"flashvars\" value=\"" + fv + "\" />");
document.write("<embed src=\"" + swf + "\" allowScriptAccess=\"sameDomain\" FlashVars=\"" + fv + "\" width=\"" + w + "\" height=\"" + h + "\" quality=\"high\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />");
document.write("</object>");
}
</script>
用类似于
<script language="JavaScript" type="text/JavaScript">
var v = "?param1=\"value1\"¶m2=\"value2\"";
writeFlash("main.swf", "765", "100%", v);
</script>
的代码来插入Flash。