[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
actionscriptからテキストの書き換えが出来ないのでPHPと連携してアクセスカウンターを作成するテスト。
無理にflashでアクセスカウンタ作る必要もないけど、PHPとactionscriptの連携の経験にはなる。
コーディングのレベルとしては初歩的で勉強しやすいから自分的にもわかりやすかった。
PHPと連携出来るとまたいろいろ幅が広がるな~と思う。
PHPとMYSQLは連携させるコンテンツを作成した事もいくつかあるので、
データベースと連携したFlashコンテンツというのも出来るね!
用意するもの
・カウンタ用FLASHファイル(count.swf)
・カウンタ用PHPファイル(count.php)
・カウント用データファイル(count.dat)
カウント用データファイルの中身は0とか1とか適当に半角数字を入れておいてください。
また、これらの3つのファイルは同じフォルダの中か同じ階層にした方が理解はしやすいと思います。
【flash側 count.swf】
カウンタを表示する為のダイナミックテキストを配置。インスタンス名をcounterとしておく。
actionscriptを以下のように記述。
var LvObj:LoadVars = new LoadVars();
var SvObj:LoadVars = new LoadVars();
LvObj.load("count.dat");
LvObj.onData = function(src){
var count:Number = src;
count++;
SvObj.count = count;
SvObj.sendAndLoad("count.php",SvObj); //連携するPHPファイル名をcount.phpと設定した場合
counter.text =count;
};
SvObj.onData = function(){
stop();
}
【PHP count.php】
<?php
//カウント用のデータファイルの読み込み
$LogFile = "count.dat";
if(isset($_POST)){
$count = urldecode($_POST["count"]);
$fp = fopen($LogFile, "w+");
fputs($fp,$count);
fclose($fp);
}
?>
注意点
actionscript内の、
SvObj.sendAndLoad("count.php",SvObj); //連携するPHPファイル名をcount.phpと設定した場合
ここの部分でPHPファイルのパスを指定しているけど、
これ一応しっかりとしたURLを入れた方がいいっぽい。
私はこれで同じ階層に置いたから良しと思ったけど、動かなかった。
http://~.com/count.php みたいにしっかりPHPファイルのURL入れたら動きました。
文字の抽出はcharAtやsubstrを使用するが
これ文字以外、例えば数字には出来ないし、String型に日付とか入れると抽出するとundefinedが出る。
自分は日付の1文字ずつを抽出して個々のムービークリップとして使用したかったので、
これの対策として以下とした。
var date = new Date();
var moji:Number;
moji = date.getFullYear();
trace(String(moji).charAt(1));
charAt(1)は2009年の1番目を表示するので、これの表示は 0 となる。
先頭は0番目からだからね^^
String型で型キャストするって事だのん
いちいち型キャストせずにやればいいのに?って思うが、たとえば
最初から変数mojiをString型で定義した場合。
var date = new Date();
var moji:String;
moji = date.getFullYear();
trace(moji.charAt(1));
この結果はundefinedになる。
trace(moji.charAt(1)); を
trace(moji); とするときちんと2009が表示されるのだ。
型キャストに気付かないとハマるかも^^
タイムライン上でいくつかのラベルで動きを制御して、
ラベル1を実行、動作が終わったらラベル2実行…という感じでラベル7位まで連鎖するのだが、
個々のラベルの中でonEnterFrameを使って、次のラベルへ行く時はそのEnterFrameをdeleteする。
が、deleteしているはずなのにEnterFrameが止まらないのだ。
あれ?と悩んでいろいろいじってみたが、いつまでたってもなおらない。
なんだこれ…とソースを隅々まで見た所、プログラム中で呼び出していない自作関数があって、
その関数内でonEnterFrameを使っているラベルを実行していたのだ。
その関数を消したら直った。
うーん。疑問。
実際その自作した関数はプログラム内で一度も呼び出していなかったのに。
いや、呼び出さない関数を定義していたのもおかしい話だが、
呼び出していない関数が実行されているのもおかしいだろ…まあ、直ったからいいんだが。
しかし気付いてよかった。
まさかそこが原因だとは思わなかったし。
当たり判定のやり方。
初心者にもわかりやすいhitTest関数がactionscriptに用意されていますので、
これを使って簡単に当たり判定が出来ます。
ステージに
testMcというムービークリップを用意。
1フレーム目にスクリプトを書くレイヤーを用意して、以下のスクリプトを記述
onEnterFrame = hitHantei;
function hitHantei(){
if(testMc.hitTest(_xmouse,_ymouse,true)){
trace("hit");
}
}
【解説】
マウスのX座標とY座標との接触判定です。
この座標を対象のムービークリップの座標に変えれば色々ゲームなんかにも使えそうですね☆
actionscriptを使ってPHPと連携させるのはどうやるのか勉強中にだいぶ困ったのでメモします。
同じ事でつまづいている方(特に私と同じような初心者の方)の手助けになれば・・・と思います。
初心者なんであんまり専門用語やら他の機能が付いたスクリプトをサンプルに勉強しても、
どれが実際の送受信に必要なのか解り辛くて、自分の作っているアプリケーションに
組み込むのを断念してしまう場合もあるのではないでしょうか?
とにかくFLASHとPHPとの送受信のみに絞ってありますので、スクリプトも超単純です。
掲示板作成やデータベースとの連携なんかは初心者がいきなり作れる訳ないです!
あせらず一番最初にやるべき基礎を勉強して理解してからにしましょう!
ではphpとデータの送受信してみますか!
簡単ですよ☆
今回はFLASH側のボタンを押すとPHPと接続してデータを送受信するアプリケーションです。
用意するもの
・FLASHファイル
・PHPファイル(今回はtest.phpという名前)
①FLASH側でボタンのムービークリップを作成します。インスタンス名をsendBtnとします。
シーン1に以下のactionscriptを記述します。
//メール送信関数
function sendMail():Void{
var sendLV:LoadVars = new LoadVars();
var loadLV:LoadVars = new LoadVars();
sendLV.buriburi = "ぶりぶり";
loadLV.onLoad = function(success){
if(success == true){
trace(this.message);
}else{
trace("通信に失敗しました");
}
}
//PHPファイルの置いてある場所をきちんと指定
//今回はtest.phpというPHPファイルに接続します
sendLV.sendAndLoad("http://●●●●.com/test.php", loadLV, "POST");
}
//送信ボタンを押したら
sendBtn.onPress = function(){
sendMail();
}
イメージはこんな感じ
②PHPファイルを用意します。test.phpという名前で作成します。
保存先は、PHPの動くサーバーにしてください。
このPHPファイルを置いたURLは、FLASH側で指定するのに使用しています。
sendLV.sendAndLoad("http://●●●●.com/test.php", loadLV, "POST");
の部分。
test.phpに以下のプログラムを打ちます。
<?php
$buriburi = $_POST["buriburi"];
print "message=" .$buriburi ."をちゃんと受信しました";
?>
【今回の流れ解説】
(FLASH側)
buriburi という変数に ”ぶりぶり” という値をセットしてPHPへ送信します。
↓↓↓↓↓↓↓↓
(PHP側)
受信した buriburi に入っている値を $buriburi へ代入します。
message= というのは次にFLASH側で判定する時に使います。
PHP側では
message=ぶりぶりを受信しました
という文字列を出力するだけです。
↓↓↓↓↓↓↓↓
(FLASH側)
this.messageを表示します。
PHP側の message= 以降の部分です。
今回の実行結果では
と出力されます。
スクリプトはとにかくコピペではなく、見ながら自分で打って下さい!
どんな難しいスクリプトもそうするとだんだん覚えますよ!
| 05 | 2026/06 | 07 |
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
詳しくはコチラをご覧下さい。
また、ショップ様、特に個人店様を支援しております。
コチラをご覧下さい。
皆様の幸せを願っています。
皆笑顔で人生を過ごしたいですね!