株式会社antsのホームページへようこそ。

Apolloのスクリプト・ブリッジングを試してみる

0
Posted in Lab. By tanaka

bridging.jpg

Apolloの売りの1つにASとJSのクロススクリプティングがあります。スクリプト・ブリッジングと呼ぶんですが、FlashのExternalInterfaceよりもっと楽です。そいつをちょっとだけ試してみました。ついでにApolloはHTMLだけでもアプリにできるってことで、それも含めたテストです。テキストエディタがあれば済んじゃいます。


イメージを見れば一目瞭然ですが、上のテキストフィールドに何か入力してsaveボタンを押すと、それをファイルに保存します。ファイルはデスクトップ上に作成されます。loadボタンを押すと保存したファイルから中身を読んで、下のテキストフィールドに表示します。残念ながら日本語の入力ができないみたいですが。

で、HTMLとJSの中身はこんな感じです。

□ bridging.html

<html>
<head>
  <script type="text/javascript" src="bridging.js"></script>
</head>
<body onload="init()">
  <input type="text" id="input_txt">
  <input type="button" value="save" onClick="writeText();">
  <br><br>
  <input type="text" id="output_txt">
  <input type="button" value="load" onClick="readText();">
</body>
</html>

□ bridging.js

var filesystem = runtime.flash.filesystem;
var file = filesystem.File.desktopDirectory.resolve("bridging.txt");

function init() {
  window.resizeTo(260, 140);
}

function writeText() {
  var stream = new filesystem.FileStream();
  stream.open(file, filesystem.FileMode.WRITE);
  stream.writeUTFBytes(input_txt.value);
  stream.close();
}

function readText() {
  if (file.exists) {
    var stream = new filesystem.FileStream();
    stream.open(file, filesystem.FileMode.READ);
    output_txt.value = stream.readUTFBytes(stream.bytesAvailable);
    stream.close();
  } else {
    output_txt.value = "file doesn't exist";
  }
}

JSの1行目を見て分かるように、runtimeというオブジェクトを通して直接ASのクラスやメソッドにアクセスできちゃいます。これをアプリとして実行するために、アプリケーションを定義するXMLファイル(Adobe上条さんのblogでは「アプリケーション記述ファイル」と呼んでますね)を作るのですが、rootContentにhtmlを指定する以外はswfのときと同じです。

□ bridging.xml

<?xml version="1.0" encoding="UTF-8" ?>
<application xmlns="http://ns.adobe.com/apollo/application/1.0.M3" appId="jp.anthill.bridging" version="0.1">
  <properties>
    <name>Bridging Test</name>
    <description>Testing script-bridging</description>
    <publisher>Yasuhiro Tanaka</publisher>
    <copyright>2007 ants Lab.</copyright>
  </properties>
  <rootContent systemChrome="standard" transparent="false" visible="true">bridging.html</rootContent>
</application>

このXMLファイルをADL(Apollo Debug Launcher)で実行すればアプリとしての動作確認ができます。ADLはApollo SDKに含まれています。…が、ぼくのMacではHTMLアプリに限ってADLがBus Errorと言って落ちてしまいます。うーんなんででしょう。とりあえずWinでは問題なく動きました。

細かいことの説明は、ようやく和訳も終わりつつあるポケットガイドを見るとだいたい書いてあります。ADLの使い方は第2章、スクリプト・ブリッジングについては第3章、ファイルアクセスについては第4章に書いてありますよ。

なお、今回使ったファイルはこちらです。