Posts Tagged ‘ flash

两个学习Flash的网站

wonderfl

wonderfl

这是日本人建的一个网站,与众不同的是它直接展示源代码,旁边就显示效果,非常直观。这里有大量的人员发布他们的代码,有很多非常有创意的想法与技巧。

gotoAndLearn

gotoAndLearn

这个网站不仅提供源文件下载,还会以视频的形式教授整个制做过程,是个难得可贵的教学网站。所教内容包括FlashFlex以及AIR

用Flashbug调试Flash

Flashbug是一款基于FireBug火狐插件,这给利用Flex SDK开发程序的人带来了便利。以前只能用FDB命令行来调试,现在有了Flashbug就更直观了。

安装Flashbug也非常方便,不过要先给火狐安装FireBug插件,还得给火狐安装Debug版本的Flash播放器

在实际操作中还要注意两点:

一、在编译生成swf文件时,要输出成debug版本的文件,如下命令:

D:\flex4\bin\mxmlc.exe -debug=true --strict=true main.mxml

注意里面-debug=true,加了这一段就能输出debug版本的swf文件。

二、要把生成的swf文件嵌入到HTML文件中,不能用浏览器直接打开swf文件,否则Flashbug会失效。

Flashbug的使用很简单,打开FireBug,切换到Flash Console标签,在Trace Log里就能看到在Flash文件中通过trace方法输出的信息,还能查看Shared Objects的信息。

Flashbug

阅读全文

用Flash的base参数来设置相对路径

在页面中的Flash如果以相对路径载入资料,这时Flash所使用的相对路径不是相对于Flash本身的,而是相对于Flash所在的页面地址。比如在http://julabs.me/text.html这个页面上有个http://julabs.me/asset/loadimg.swf的Flash文件,它要载入一张http://julabs.me/asset/flower.jpg的图片,如果在Flash中使用相对路径flower.jpg的话,那么在http://julabs.me/flash-base.html页面上你会看不到这张图片。因为这时在页面中的Flash会以页面地址做为相对路径的参照,它实际调用的图片路径已经变成了http://julabs.me/flower.jpg

如果想让Flash一直都是以自身文件所在的路径做为相对路径的参照,那么就要在页面嵌入Flash的代码中加一个参数:base,如下:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
height="30" width="197">
	<param name="base" value="." />
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="movie" value="/Website/Common/Flash/staples_djs.swf" />
	<param name="quality" value="high" />
	<param name="bgcolor" value="#D9DC4D" />
	<param name="menu" value="false" />
	<param name="wmode" value="transparent" />
	<embed base="." src="/Website/Common/Flash/staples_djs.swf"
	wmode="transparent" menu="false" bgcolor="#D9DC4D" quality="high"
	allowscriptaccess="sameDomain" type="application/x-shockwave-flash"
	pluginspage="http://www.macromedia.com/go/getflashplayer" height="30" width="197" />
</object>

注意在代码的paramembed中都要设置,更多的设置方法请参看Luar《你有所不知的HTML發佈Flash的參數(三):base》

FireFox下flash背景透明问题

今天修改页面,原因是flash在IE下背景是透明的,但在FireFox下却是无效的。代码如下:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" height="30" width="197">
<param name="allowScriptAccess" value="sameDomain">
<param name="movie" value="/Website/Common/Flash/staples_djs.swf">
<param name="quality" value="high"><param name="bgcolor" value="#D9DC4D">
<param name="menu" value="false"><param name="wmode" value="transparent">
<embed src="/Website/Common/Flash/staples_djs.swft" menu="false" bgcolor="#D9DC4D" quality="high" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" height="30" width="197" />
</object>

上网一查,果然不出所料,FireFox不支持写在flash中param参数里面的transparent属性,你必须把flash的wmod属性也要写在embed标签中。如下在embed标签中加一个“wmode=”transparent””flash就可以在FireFox下透明了。

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" height="30" width="197">
<param name="allowScriptAccess" value="sameDomain">
<param name="movie" value="/Website/Common/Flash/staples_djs.swf">
<param name="quality" value="high"><param name="bgcolor" value="#D9DC4D">
<param name="menu" value="false"><param name="wmode" value="transparent">
<embed src="/Website/Common/Flash/staples_djs.swf" wmode="transparent" menu="false" bgcolor="#D9DC4D" quality="high" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" height="30" width="197" />
</object>

Embed是一个不符合网页标准的标签,为什么一向被认为最接近标准的FireFox却只支持Embed标签呢?简单说一下:Embed是Netscape的技术,而FireFox和Netscape是使用相同的内核的,所以FireFox目前还只能认Embed。顺便说一句,虽然Embed不符合W3的XHTML标准,但在HTML5中它却是合法的!