先日のIEとFlashとJavaScriptと「カチッ」って音とExternalInterfaceクラスととで、IEでJavaScriptを呼び出すと「カチッ」音がでるというエントリーだったけど、7月参加したプロジェクト(フルFlash構築)で他社のアクセス解析をFlashと連携させる必要があったので、アクセス解析に接続するためのクラスを作ってみた。これを流用すればGoogleAnalytics用にも使えるはず(まだ試してないけど)。
このクラスの名前は、「アクセス解析」に「接続」なので、「AnalyticsConnector」とした。
まず、Flash内部ではこんなカンジで記述。
また、アクセス解析を行う track() というメソッドは、対象のアクセス解析によってクラス自体を修正して下さい。今回の使用したアクセス解析では好きなページIDを使うことができたので、このようにしてみた。
続いて、クラスのソースはこんなカンジ。ただし対象は、Player8 から。ExternalInterface使ってるからっす。
さて、注意してほしいのは、最初に Flash8 から加わった ExternalInterface クラスを import するため、FlashPlayer のバージョンが8よりも低い場合は使用することができないということ。
あくまでも「カチッ」という音を消しつつJSを呼び出すことがメインなので、Player のバージョンが7以前であれば、普通に getURL だけのクラスを作るなりして対応をたのんます。
また、最初に MacOS で分岐しているのは、MacIEの挙動が怪しかったからです。今回は音がメインで、MacではIEだろうとSafariだろうと音がでないので、ExternalInterface じゃなくて gertURL を使うことに。
いやぁ今回は、デザパタ使ってみたりブラウザの挙動と戦ってみたりと、いろいろ勉強になったなぁ~
このクラスの名前は、「アクセス解析」に「接続」なので、「AnalyticsConnector」とした。
まず、Flash内部ではこんなカンジで記述。
var myAC:AnalyticsConnector = AnalyticsConnector.getInstance();
a_mc.onRelease = function(){
myAC.track("pageID");
}
このクラスはプロジェクトに対して1つという関係が前提というのが多いので、インスタンスを複数作らせないために Singleton パターンで構築してみた。よくわからない人はデザインパターンを夜露死苦。また、アクセス解析を行う track() というメソッドは、対象のアクセス解析によってクラス自体を修正して下さい。今回の使用したアクセス解析では好きなページIDを使うことができたので、このようにしてみた。
続いて、クラスのソースはこんなカンジ。ただし対象は、Player8 から。ExternalInterface使ってるからっす。
import flash.external.*;
class AnalyticsConnector{
private static var instance:AnalyticsConnector;
static var isIntefaceAvailable:Boolean;
private function AnalyticsConnector(){
if(System.capabilities.os != "MacOS"){
isIntefaceAvailable = ExternalInterface.available;
}else{
isIntefaceAvailable = false;
}
}
static function getInstance():AnalyticsConnector{
if(!AnalyticsConnector.instance){
AnalyticsConnector.instance = new AnalyticsConnector();
}
return AnalyticsConnector.instance;
}
function track(pageID:String){
if(isIntefaceAvailable){
ExternalInterface.call("testJS", pageID);
}else{
var js:String = "javascript: testJS('" + pageID + "');";
getURL(js);
}
}
}
上述してますが、 track() で連動するJSはアクセス解析によって変更してもらえれば。なお、このサンプルではJSの testJS() という関数を呼び出してる。さて、注意してほしいのは、最初に Flash8 から加わった ExternalInterface クラスを import するため、FlashPlayer のバージョンが8よりも低い場合は使用することができないということ。
あくまでも「カチッ」という音を消しつつJSを呼び出すことがメインなので、Player のバージョンが7以前であれば、普通に getURL だけのクラスを作るなりして対応をたのんます。
また、最初に MacOS で分岐しているのは、MacIEの挙動が怪しかったからです。今回は音がメインで、MacではIEだろうとSafariだろうと音がでないので、ExternalInterface じゃなくて gertURL を使うことに。
いやぁ今回は、デザパタ使ってみたりブラウザの挙動と戦ってみたりと、いろいろ勉強になったなぁ~

Send Your Comment