有載入外部資源的都知道,Flash相對路徑是根據它所在HTML而不是Flash自己本身,例如網頁http://luar.com.hk/test.html有一個http://luar.com.hk/swf/test.swf,這個Flash以相對路徑載入test.xml,Flash Player載入http://luar.com.hk/test.xml而不是http://luar.com.hk/swf/test.xml。因為這種特性,往往發生很多發佈上問題。開發人員明明在本地測試妥當,所有相關files連同swf都放在同一個folder裡面,到交付客戶時,卻出現問題,因為別人可能喜歡將整個東西放在一個subfolder下,在HTML嵌入Flash時,Flash和本身HTML根本不在同一個folder下,結果出現找不到外部資源問題。

其實HTML發佈Flash的參數有一個叫base,可以指示Flash相對路徑由那裡開始,只要設定base=".",就可以跟著Flash路徑走。

平常例子:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000〃
width="500〃
height="300〃
codebase="http://active.macromedia.com/flash7/cabs/swflash.cab#version=9,0,0,0">
<param name="base" value="."></param>
<param name="movie" value="swf/test.swf"></param>
<param name="play" value="true"></param>
<embed base="." src="swf/test.swf"
width="500" height="300" play="true"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed></object>

用SWFObject例子;

var swfobj = new SWFObject(value, "swf/test.swf", 500, 300, "9.0.0.0", "#FFFFFF");
swfobj.addParam("base", ".");
swfobj.write("swfDiv");

用Adobe自帶Publish的AC_RunActiveContent.js例子;

AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
'base', '.',
'width', '500',
'height', '300',
'src', 'test',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'test',
'bgcolor', '#ffffff',
'name', 'test',
'menu', 'true',
'movie', 'swf/test',
'salign', ''
);
 posted on 2010-05-23 16:17  隔山打牛  阅读(803)  评论(1编辑  收藏  举报