2010年06月17日 星期四 19:41
由于某度过于恶心等众所周知的原因,搬离写了5年的渣度空间,准备把技术性的文章定在CSDN了。这些都是文章备份。勿怪。。
(鉴于最近有些抓取机器和抄袭者,把标题的【原】字都复制,我不得不声明:本文为 yukon12345原创,转载请注明出处http://blog.csdn.net/yukon12345)
接下来要推荐的是开源插件swfobject(在src文件夹有所有源码)
swfobject下载:http://code.google.com/p/swfobject/ (右边有最新版链接)
swfobject是比较流行的使用js而非使用<embed><object>插入flash影片的js插件,除了插入flash之外,还提供向flash传递值,检测浏览器版本,简化加载过程的作用,甚至还可以让低版本flash player的用户不离开本页面而自动升级,最新的2.2版甚至还添加了对iphone嵌入mp4的支持,以及对HTML5的<!doctype html>文档标签类型的支持。
中文使用说明:http://wenku.baidu.com/view/6c49d27da26925c52cc5bff3.html
向外开放的程序接口:http://code.google.com/p/swfobject/wiki/api
看到这么多,昏了吧?来直接进入关键主题:
把swf嵌入网页中:
<html>
<script type="text/javascript" src="swfobject.js"></script> //这里先要引入这个swfobject插件
<script type="text/javascript">
swfobject.embedSWF("your.swf", "flashcontent", "300", "120","9", "expressInstall.swf");
</script>
<div id="flashcontent">
This text is replaced by the Flash movie. //这里是如果js被禁用,导致无法加载时的显示文字
</div>
</html>
这样就完成了。很简单
解释:
直接使用swfobject.embedSWF()即可导入参数的意义各如下:
1:("your.swf") 你想导入的swf的地址
2:("flashcontent" )指出flash将放入的div的ID号。同时也是flash的ID号。另外如果想用css的话 div#flashcontent可选择div,object#flashcontent可选择flash
3:(“300”)宽度
4:("120")高度
5:("9")最低要求版本号。将检测是否小于此版本号
6:("expressInstall.swf")如果版本过低,将导入的安装文件。让用户可以在此页面自动升级。
以上是最简单的swf文件导入。
更复杂一点的:将各种参数传递给flash:
<html>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars={
name1:"hello",
name2:"world"
}
var params={
menu: "false"
}
var attributes = {
id: "myDynamicContent",
//注意:在这里不设置时flash影片的id值将继承于它的html父容器的id,设置后,flashid将会是此设置值(加载完毕响应函数callbackFn执行时,id还是原来的。之后就会改变)
name: "myDynamicContent"
}
function callbackFn(e) {
if(e.success)
{
alert("flash加载成功!\n id:"+e.id+"\n引用:"+e.ref)
}
else{
alert("flash加载失败!\n id:"+e.id)
}
}
swfobject.embedSWF("你的文件名地址.swf", "flashcontent", "300", "120", "10", "expressInstall.swf",flashvars, params, attributes, callbackFn);
</script>
<div id="flashcontent">
This text is replaced by the Flash movie.
</div>
</html>
解释:
flashvars:传递给flash影片的URL类型参数。作用同于原始的 *.swf?name1="hello"&name2="wolrd"。as3中使用loaderInfo.parameters数组来获取参数值。比如使用loaderInfo.parameters['name1']获取到hello
params:flash的params标签值。作用同于原始的<param name=" menu" value="false" />
attributes:flash属性值作用同于<object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1" width="100" height="50">
关于最后一个事件回调参数callbackFn,它接收一个object对象比如e,在加载flash完毕或者失败后响应执行。e对象属性有:
success,指出是否加载成功(true/false)
id, 指出使用swfobject.registerObject()接口注册的flash的id (swfobject.registerObject接口在初始化时会自动调用)
ref, 当加载成功时,返回HTML对象元素的引用,失败时返回undefined。