Home » 未分类 » AIR 嵌入Html页面,AS3与JS脚本交互Demo

AIR 嵌入Html页面,AS3与JS脚本交互Demo

用AIR做app开发的时候,有些数据,想放到服务器。但是又嫌服务器开发,太麻烦。找到一个比较好的解决方案就是,借助市面上Backend as a Service(BaaS)的后端云,可以轻松实现用户登陆注册,数据存储,即时消息交互等后端逻辑开发。比如leancloud.cn。

但是有一个问题,那就是大部分这种后端云平台,不会直接提供Flash SDK。所以不得不绕道JavaScript。

通过AIR加载一个HTML页面,然后通过这个页面,实现AS3与JS的交互。通过JS发送和接收后端数据。

那么具体怎么做呢?

代码示例如下:

import mx.controls.Alert;
import mx.events.FlexEvent;

private var htmlLoader:HTMLLoader

protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
// html.location = “http://www.baidu.com”;
var htmlLoader:HTMLLoader = new HTMLLoader();
// htmlLoader.load(new URLRequest(“jscall/Test.html”));
var file:File = File.applicationDirectory.resolvePath(“jscall/Test.html”);
var fileStream:FileStream = new FileStream();
fileStream.open(file,FileMode.READ);
var htmlStr:String = fileStream.readMultiByte(fileStream.bytesAvailable,”utf-8″);
fileStream.close();
htmlLoader.loadString(htmlStr);
htmlLoader.width = 500;
htmlLoader.height = 500;
this.htmlLoader = htmlLoader;
// con.addChild(htmlLoader);
htmlLoader.addEventListener(Event.COMPLETE, onComplete);
}

protected function onComplete(event:Event):void
{
var htmlLoader:HTMLLoader = event.target as HTMLLoader;

htmlLoader.window.document.getElementById(“testLink”).onclick = clickHandler;

}

private function clickHandler(e:Object):void
{
Alert.show(“from js!”);
}

protected function tes_clickHandler(event:MouseEvent):void
{
var o:Object = htmlLoader.window.document.throwError(“我叼你”);
}

 

 

Test.html

 

<html>
<head>
<script>
window.document.throwError = function(msg) {
alert(“fromAIR:”+msg);
}
</script>
</head>
<body>
<h1>test Page</h1>
<a href=”#” id=”testLink”>Click me.</a>
</body>
</html>

    分享到: