- 2008年6月18日 21:11
- analyze
※この記事は古いです。↓のリンクが新しいので、この記事内のスクリプトは使わないでね!※
FlashCS3でAnalyticsを使う「Google Analytics Tracking for Adobe Flash」の方が簡単です。こちらをどうぞ!
via:
FlashからGoogle Analyticsをトラッキングするにはどうすればよいですか(Analyticsヘルプ)
Flashのボタンやフレームや、まぁいろんなタイミングで「このページが見られたか」「誰に見られたか」とかを計測するのに、Analyticsを使うのがスマートです。
FlashCS3のAnalyticsコンポーネントの解説はこちら。
AS2ですが、古いGA(urchinTracker)に対応する方法は↓
on (release) {
getURL("javascript:urchinTracker('/folder/file');");
}
新しいコードに対応する書き方はこちら↓
on (release) {
getURL("javascript:pageTracker._trackPageview('/folder/file.html');");
}
などと書けばよいらしく、GAの関数に適当な引数をつけて呼んであげればよい、ということでした。
でもこれはAS2の話です。ではAS3ではどうかというと、getURL関数がなくなってしまったので(getURLはページ遷移ということでnavigatoToURL関数になりました)javascriptを呼び出すときはExternalInterfaceを使います。
import flash.external.ExternalInterface;
import flash.events.MouseEvent;
button001.addEventListener(MouseEvent.CLICK,TestJS)
function TestJS(evt:MouseEvent):void {
ExternalInterface.call("urchinTracker", "/flashclick/001btn");
}
こんな感じでしょうか。
じゃあurchinTrackerを呼ぶのをもっと簡単にしたいよね、ということで、これだけを呼ぶクラスを作ってみます。
//ExGA.as
package{
import flash.external.*
public class ExGA{
public static function track(pageID):void{
ExternalInterface.call("urchinTracker",pageID)
}
}
}
こんなのが出ました、ってんで使い方としてはこちら。↓
//Flash IDE上のフレームスクリプト
//画面にはインスタンスbtn001があります
var page:String = "/flashclick/001btn"
btn001.addEventListener(MouseEvent.CLICK,trackFunc(page))
function trackFunc(_page:String):Function{
return function(e:MouseEvent):void{
ExGA.track(_page)
}
}
これは何をやってんのかというと、(1)MouseEvent.CLICKで実行するハンドラに引数をあてて、(2)引数をstatic関数trackに送って、(3)MouseEventをもつハンドラ関数を定義している、ということです。
何でそんな面倒なやり方するんじゃ、という疑問については、addEventListenerに登録する関数に引数を持たせたいからです。別に引数をpageという変数で持ってるんだから
//Flash IDE上のフレームスクリプト
//画面にはインスタンスbtn001があります
var page:String = "/flashclick/001btn"
btn001.addEventListener(MouseEvent.CLICK,trackFunc)
function trackFunc(e:MouseEvent):void{
ExGA.tracker(page)
}
というやり方でも全然OK。結果は
!!注意!! これは、Flash単体での解析ではありません。ページ内にga.jsを読み込んだ上での作業なので、フルフラッシュページの解析をしたいならこちらをチェックしてください。
Externalするときの注意
SWFObjectを使ったExternalInterfaceまとめでも書きましたが、この注意点(objectのIDに念のためexternal、と名づけておくとか)に加えて、まぁ確認の話なんですが、Flashからのexternalコールはローカル環境じゃ動かないという点が意外とハマるかも。javascriptのalertを呼ぶだけでもローカルじゃ動きません。
なぜか。
なぜなら、FlashPlayer←ブラウザ→JS、の流れで、ネットワークアクセスが発生しているからです。よく分からないけどそうです。
JSでalertを書いてそのまま実行するならローカル環境なんだけど、ASからJSを呼ぼうとしているときはネットワークを経由している(localhostみたいなもの?)のです。
macの場合は「web共有」をオンにしてlocalhost環境で試してみればOK。
あわせて読みたい

ECサイト4モデル式 Google Analytics経営戦略 (ビジネスアスキー) (ビジネスアスキー)

Google Analyticsではじめる SEO対策
Comments:2
- Suzuki 2009年7月13日 18:05
ExternalInterface.call("urchinTracker",pageID)
ではなくて、
ExternalInterface.call("pageTracker._trackPageview", pageID);
ではないでしょうか?
-
ryow
2009年7月13日 23:22
>Suzukiさま
コメントありがとうございます!
確かにそうです。urchinTrackerは、ga.jsになる前のAnalyticsで使われてたメソッド(この記事公開当時)なので、現在だとご指摘の通りの書き方になると思います。ただ、Ex.callでメソッドを指定していると、Analytics側でメソッド変更があったときに使えないので、今やる場合はFlash用Analyticsコンポーネント(この記事の上に追記したリンク)を見てみてくださいね!
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/339
- Listed below are links to weblogs that reference
- FlashからGoogle Analyticsを使う(AS2、AS3両方対応) from ryow.net Blog