FLASHのお勉強 ーアクションスクリプトの実践的事始めー

(6)FLASH画面にアクセスカウンター

  (18)アクセスカウンター_2も参照ください(もっと踊ります)

 ホームページにアクセスカウンターはつきものであるが、FLASHでトップページを作った場合、その画面にカウンターを埋め込むにはどうしたらいいだろうか。 無料サイトのカウンターを貼るわけにはいかないので、自分でcgiを設置して、Flashからデータを取り込んで表示しなければならない。 自前cgiを使えるプロバイダーでなければ出来ないという制約があるし、それよりも、このサイトの読者の多くはcgiって何?とか、cgiの中身なんか分からないよという方が多いかもしれないが、カウンター設置の必要性は高いと思われるので、今回のお勉強としたい。
 原理はとても簡単である。 Flashが再生開始になるとcgiを呼び出す。すると、cgiはカウントの従来値に+1して累積DATAをFlashのテキストフィールドに返すというものである。
     
 アクセスカウンター用のcgiはWebで探せば沢山見つかる。 しかし、そのままではFlash用には使えない。 そこで改造が必要になるが、改造するのは結構手間がかかので、ここでは自前のcgiを作成し、これを使うことにする。 自前のcgiといっても、とてもシンプルなもので、とにかくページが開かれればそれが自分であろうが、連続であろうがカウントされるという基本的なものである。 cgiの解説は本題から離れるのでしないが、使って見ようという方がおられれば、こちらを参照されたい。

ステージの準備
 カウンターを設置したい場所にテキストツールでテキストフィールドを作成する。 このとき背景を矩形ツールなどで描き好みの色に色付けしたりもできるし、全体の背景に溶け込ませることも出来る。
 以下にメニューバー群の下に配置したときの例を示す。
   テキストの種類: ダイナミックテキスト
   インスタンス名: counter
 なお、カウンター1は普通の静止型、カウンター2は動きのある例としてスクロール表示型。

スクリプトとサンプル表示
  以下のスクリプトは、カウンター1,2を別々に表示させるときのスクリプトである。
<カウンター1>
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
if (success) {
  _root.counter.text = this.count
  }
}
myLoadVars.sendAndLoad("counter4flash.cgi",myLoadVars);

stop();


スクリプトの説明:
 LoadVars:Flashとサーバーの間でデータをやり取りするために
        定義されるオブジェクト
 LoadVars.onLoad:データ読み込みの正否を判断し、そのデータを
        どうするかを決める。ここでは、成功したときに、
        テキストフィールドcounterに表示させている。
 this.count:cgiから呼び込まれたcountと名のついたデータ
 sendAndLoad:cgiを呼び出しデータをmyLoadVarsに取り込む
 counter4flash.cgi:cgiファイルのあるところへパスを通すこと

<カウンター2>
var cnt:Number = 0;
var cnt_str:String = "";
for (i = 1; i<20; i++) {
  cnt_str += " ";
}
System.useCodepage = true;
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(success) {
  if (success) {
  cnt_str +="あなたは  "+this.count+"  人目の訪問者です";
  _root.onEnterFrame = countertext_me;
  }
}
myLoadVars.sendAndLoad("counter4flash.cgi",myLoadVars);

function countertext_me() {
  counter.text = cnt_str.substr(cnt, cnt_str.length);
  if (cnt>cnt_str.length) { cnt=0; }
  cnt++;
}

stop();




文字列cnt_strを定義
cnt_strに20字分の空白部を入れる


s-Jisコード使用可能



空白部にプラスして、文字列定義
function countertext_meの実行




function countertext_meの定義
文字列の先頭から、連続的に1字ずつ切り取っていく

 
flashirohaサイト内  Web全体 
      
HOME   お勉強総リスト