[新闻资讯] 可以把javaScript嵌入到swf里了
- 资讯类型: 翻译
- 来源页面: http://www.kennybunch.com/blog/2009/09/embedding-javascript-into-a-swf/
- 资讯原标题: Embedding JavaScript into a SWF
- 资讯原作者: Kenny Bunch
flex 开发者应该对使用Embed元数据标签嵌入各种资源都很熟悉了,现在在flash cs4中同样可以使用元数据标签进入嵌入资源了
好多人应该还不知道竟然可以将javaScript库嵌入到swf从而使在swf可以写html DOM,而最终部署的时候这个js文件不需要暴露出来
这个技术其实很简单,基础就是用[Embed()]标签将js文件嵌入到库中,然后声明一个Class绑定到该资源,在实例化的时候将该引用的字符串发送javaScript的eval声明就可以,以下是一个简单的实例:- JavaScript:
- function hello()
- {
- alert("hello");
- }
- package
- {
- import flash.display.Sprite;
- import flash.external.ExternalInterface;
- public class EmbeddedJavaScriptExample extends Sprite
- {
- [Embed(source="hello.js", mimeType="application/octet-stream")]
- private static const HelloJS:Class;
- public function EmbeddedJavaScriptExample()
- {
- execute();
- }
- public function execute():void{
- if (ExternalInterface.available)
- {
- // embed the JavaScript to the page
- ExternalInterface.call("eval", new HelloJS().toString());
- // the embedded JavaScript has a function call named hello
- // now that it has been embedded to the page call it
- ExternalInterface.call("hello");
- }
- }
- }
- }
exp 2 : /*********************************另一个例子
*********************************************************/
js codes:
- // JScript source code
- function kaka(str)
- {
- alert(str);
- }
AS codes:
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.external.ExternalInterface;
- import flash.net.URLLoader;
- import flash.net.URLLoaderDataFormat;
- import flash.net.URLRequest;
- /**
- * ...
- * @author kaka
- */
- public class testJS extends Sprite
- {
- var loader:URLLoader = new URLLoader();
- public function testJS():void
- {
- loader.dataFormat = URLLoaderDataFormat.TEXT;
- loader.addEventListener(Event.COMPLETE, loadHandler);
- loader.load(new URLRequest("1.js"));
- }
- function loadHandler(evt:Event):void
- {
- var s:String = loader.data;
- trace("loadHandler");
- trace(s);
- if (ExternalInterface.available)
- {
- ExternalInterface.call("eval", s);
- }
- ExternalInterface.call("kaka", "kakaString");
- }
- }
- }