AIRのシームレスインストール
AIRのシームレスインストールはbadge.swfを使って行います。そのやり方のメモ。
badge.swfはFlexのSDKインスコしたところに入ってます。
例えばWindowsならば、C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.0.0\samples\badgeみたいな感じ。
あ、シームレスインストールとはブラウザからAIRアプリケーションをインスコするやつのことです。いわゆるFlashのインスコと同じ感じ。
これがないと基本的に多分案件で使うのはなかなかめんどいことかと思われます。
AIRのシームレスインストールは制約があって、Flash Player9 update3以降じゃないと動きません。
インスコ方法は2つ。
badge.swfとobjectタグだけをつかってインスコする方法と、SDK付属のインスコjavascriptを叩く方法です。
んじゃあまずはbadge.swfとobjectタグだけをつかってインスコする方法から。
これは基本的に白石さんの、今から始めるAIRプログラミング第15回のとおり。
ポイントはparamタグでもembedタグでもflashVars属性で、少なくとも以下のようにしないといけない。
<html> <body> <object id="badge" width="217" height="180" align="middle" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"> <param name="allowScriptAccess" value="all"/> <param name="movie" value="badge.swf"/> <param name="quality" value="high"/> <param name="bgcolor" value="#FFFFFF"/> <param value="appurl=http://localhost:8080/aaa/badge/NekoBeanSlider.air&airversion=1.1&buttoncolor=008811&messagecolor=000000&imageurl=nekobean.png" name="FlashVars"/> <embed width="217" height="180" align="middle" flashvars="appurl=http://localhost:8080/aaa/badge/NekoBeanSlider.air&airversion=1.1&buttoncolor=008811&messagecolor=000000&imageurl=nekobean.png" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="all" name="badge" bgcolor="#FFFFFF" quality="high" src="badge.swf"/> </object> </body> </html>
次に付属のシームレスインストールの付属js(AC_RunActiveContent.js)を使う方法。こちらはサンプルからポイントだけ記載しておくます。
まあごちゃごちゃしてっけど、ポイントは変わらなくて、
で、AC_FL_RunContentに渡すこと。ちなみにこのスクリプト、きちんとnoscriptのときでもがんばる感じになってる。
<script src="AC_RunActiveContent.js" type="text/javascript"></script> <script language="JavaScript" type="text/javascript"> <!-- // Version check based upon the values entered above in "Globals" var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); // Check to see if the version meets the requirements for playback if (hasReqestedVersion) { // if we've detected an acceptable version // embed the Flash Content SWF when all tests are passed AC_FL_RunContent( 'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab', 'width','217', 'height','180', 'id','badge', 'align','middle', 'src','badge', 'quality','high', 'bgcolor','#FFFFFF', 'name','badge', 'allowscriptaccess','all', 'pluginspage','http://www.macromedia.com/go/getflashplayer', 'flashvars','appname=NekoBeanSlider&appurl=http://localhost:8080/aaa/badge/NekoBeanSlider.air&airversion=1.1&imageurl=nekobean.png', 'movie','badge' ); //end AC code } else { // Flash Player is too old or we can't detect the plugin document.write('<table id="AIRDownloadMessageTable"><tr><td>Download <a href="myapp.air">My Application</a> now.<br /><br /><span id="AIRDownloadMessageRuntime">This application requires the <a href="'); var platform = 'unknown'; if (typeof(window.navigator.platform) != undefined) { platform = window.navigator.platform.toLowerCase(); if (platform.indexOf('win') != -1) platform = 'win'; else if (platform.indexOf('mac') != -1) platform = 'mac'; } if (platform == 'win') document.write('http://airdownload.adobe.com/air/win/download/1.0/AdobeAIRInstaller.exe'); else if (platform == 'mac') document.write('http://airdownload.adobe.com/air/mac/download/1.0/AdobeAIR.dmg'); else document.write('http://www.adobe.com/go/getair/'); document.write('">Adobe® AIR™ runtime</a>.</span></td></tr></table>'); } // --> </script>
とまあどちらでもいけますよ、と。さくっとやりたいときはhtmlでささっと書いて、まじめに作るときには
FlexSDKのやつ使えばいいんじゃないかな。どっちもたいした手間じゃないと思う。
で、結果こんな感じ。
http://d.hatena.ne.jp/c9katayama/20080604/1212563971のねこびーんスライダーをAIRアプリにしてみた。
ちょっとわかんなかったのが、AIRアプリのURL指定が相対だと駄目なのかな?なんかうまくいかなかった。
なんでURL完全指定でしてます。