今天在测试一个为Audi做Flash AD的时候,发现Audi提供的clicktag是Actionscript 2的代码,在Actionscript 3中是不被支持的,所以有去翻了Adobe Docs了。
在2.0中的clicktag代码如下:
On(Release) = { getURL(_root.clicktag, "_blank"); }
在3.0中是不支持_root的,并且事件函数也不是这样写的。自己做了个测试swf,简单代码如下:
// // test.as // // Written by Leezhm, 26th February, 2009 // Contact : [email protected] // Last Modified by Leezhm on 26th Feb, 2009 // package { import flash.display.Sprite; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.net.URLRequest; import flash.net.navigateToURL; public class test extends Sprite { public function test():void { this.addEventListener(Event.ENTER_FRAME, OnEnterFrame); this.btnLink.addEventListener(MouseEvent.CLICK, OnBtnClick); } private function OnEnterFrame(evt:Event):void { if("" != root.loaderInfo.parameters.clicktag) { this.txt.text = root.loaderInfo.parameters.clicktag; } } private function OnBtnClick(evt:MouseEvent):void { var _request:URLRequest = new URLRequest(root.loaderInfo.parameters.clicktag); navigateToURL(_request, "_blank"); } } }
很明显,_root.clicktag在Actionscript 3中是用root.loaderInfo.parameters.clicktag来代替,关于loaderInfo.parameters可以参考flash.display.loaderInfo类的parameters属性。而且也用flash.net包中的顶级函数navigateToURL代替了getURL,但是要传入一个URLRequest的参数。注意:由于flash player安全性的问题这样弹出的窗口可能被阻止。具体可见Adobe Docs的如下截图:
最后传上测试效果截图(在公司的主站上测试,由于安全性问题,对图片中显示的URL和公司Logo进行了处理)
我们在swf后输入了?clicktag=http://www.google.com。其中?是给flash传参数的标识符,一定不能丢。clicktag是参数名,后面google的网站就是传进去的参数。点击下面红色的button会链接到google的主站。
好了,其实在网页中传递参数的方法很多,大家可以自己去百度,也可以看看google的clicktag。
BTW:给大家一个clicktag的测试网站,俺Manager发给我的,很好,可以先测试。
http://www.bannerflow.com/clicktest/