
问题:SWF文件a.swf中有2个按钮,点击其中一个需要访问网络中的地址比如http://www.somesite.com,点击第二个按钮需要访问本地的一个页面,比如local.html,而a.swf是内嵌到页面index.html中的,需要在本地访问,而不是放置在服务器上。这时就出现了问题,因为SWF文件要么发布成只访问本地文件,要么是只访问网络,但是任何一项都不能满足既能点开http://www.somesite.com,又能点开local.html。
最开始我想使用localConnection来实现。就是再新建一个SWF,为b.swf,让它发布成只访问网络,而a.swf通过localConnection调用b,让b实现访问。结果发现当两个安全设置不一样时,无法使用localConnection。只能放弃这种想法。
最后借助页面的自动跳转来实现。a.swf仍旧发布成只访问本地,访问http://www.somesite.com改成访问本地文件somesite.html,在somesite.html中设置自动转向http://www.somesite.com
转向的方法有2种,一种是利用javascript的window.location=”http://www.somesite.com”,这种方法在IE7中会有警告提示,另一种方法是利用meta标签的refresh来设置:
<metahttp-equiv="refresh"content="5; url=http://www.somesite.com/"/>
1、问题:Flash文件放在网页中,全屏后画面卡住,声音正常。
解决方法:在SWF上右键,在弹出菜单中选择“设置”,弹出框中,找到“使用图形加速”,把前面的勾去掉。
2、问题:在遨游浏览器中全屏后无法按Esc键退出全屏
解决方法:无
现在各大网站中几乎都可以找到Flash的踪影,特别是图片转换特效、广告等,不可否认,这些给我们带来了很好的视觉体验,但是也不可忽略其中的问题。最近,访问新浪、闪8是都出现过这样的问题,就是打开页面后,有时会出现说Flash9的插件出问题,需要关闭,或者是浏览器如同死机一般,任务管理器里显示无响应。究竟是什么原因呢?当然,可能是9的插件中的问题,也可能是SWF中代码的问题。为什么说有可能是SWF中代码的问题呢,原因在于很多人写代码时考虑的并不十分周密,从而当外界因素改变时就可能会造成不可预料的后果。
比如,我看到很多人写代码时并不考虑执行顺序,很多人都是在下面定义变量,定义函数,却在上面调用它,虽然本地测试时是成功的,但并不表示上传到互联网上,当网速变慢时也能正常执行。FlashPlayer7、8可能在异常处理上下了很大功夫,来容忍开发者的这种行为,但是,为了让Flash跑的更快,运行的更流畅,严格的代码规则是必要的,这样,Player才能把更多的精力用在提高效率、绘制速度上,而不是过多的考虑那些异常。而我们,应该按规则做事,这样才不至于导致很多异常。
所以,我们应该多考虑下可能发生的情况,规范好事情处理流程。
另外,再举个例子,就是removeMovieClip,我看到好多次,都是把自己remove掉后,还让它执行其他代码的,在本机测试时,可能不会看到有什么效果,但是运行在配置比较低的机器上时,问题会爆露的清清楚楚。
在adobe下功夫改善FlashPlayer性能的时候,我们也应该提高自己的水平才行!
利用发光滤镜GlowFilter和圆形,可以作出漂亮的遮罩效果。如下:
详情请看这里GlowFilter+圆形做的图片轮换效果
用SoundMixer的computeSpectrum() 方法提取声音数据并制作一个频谱图形是件很不错的事情,但是它却存在一些问题。
[问题描述]
浏览器:IE7
系统:WinXPSP2
两个不同域中各有一个swf同样使用SoundMixer.computeSpectrum() 方法提取声音数据,
1、在IE7中单独打开上面两个中的任意一个含SWF的网页,频谱图形都很正常。
2、打开2个IE7,分别用来打开上面两个含SWF的网页,频谱图形也正常。
3、打开一个IE7,新建两个选项开,用来打开上面包含两个SWF的网页,频谱图形不正常,测试抓取错误时看到Security Error :#2121。
[简单分析]
SoundMixer.computeSpectrum() 是抓取应用程序中的当前播放的混合声音的数据。通过上面3种情况下的测试,可以推测,虽然是同一个IE应用程序中的不同选项卡中,但是SWF仍然认为是在同一个应用程序中。
这对我们不是一件好事,因为很多人希望开新选项卡(无论是IE中还是FireFox中),而不是开新的窗口,如果多个不相干的网页中都要使用SoundMixer.computeSpectrum() 做频谱图,那么最终结果是由于安全限制问题,谁都无法正常显示(当然,并不影响声音的正常播放,只是无法成功抓取声音原始数据而已)。就算是使用跨域策略解决了访问问题,但是现实是我们更希望SoundMixer.computeSpectrum() 抓取的是自己的SWF中播放的声音数据,而不是所有SWF中播放的声音数据
[如何解决]
computeSpectrum是静态方法,所以无法创建SoundMixer的实例来使用它。唉,想不到解决的办法。等待Adobe解决
无解决办法。
目录表
于8月21日发布的Flash Player 9 Update 3,其代号为影星(MovieStar),在全屏模式和视频方面进行了不小的加强,在视频网站及其火爆的今天,FlashPlayer的这一改进,更会巩固它的市场地位!不管是由于和微软的竞争,还是自己本身的努力促成的这一成果,对用户来说,都是好事,有什么比享受到更优秀的服务更好的事情呢? (阅读全文…)