|
最初に一つ言わせて頂きます。私はプログラマーではなくデザイナーなんです。単なる言い訳なんですが、何が言いたいかというと、デザインが本業なので、プログラムの勉強とか受けてるわけではなく、ほぼ独学なんです。ソースとかたぶんプログラマな人から見ると、ものすごく汚いと思うんです。いや、汚いです。
なので、ソースの公開希望の声を1票頂きましたが、暫くはしないかも知れません……。(ナニ!)
で、ここでは解説のみ。トップページにある占いFlashは主に以下の機能を使っています。
■sharedobjectによる誕生日保存機能
これはFlashMXから装備された、ローカル保存の機能ですね。データ収集する事なく、また簡単に保存・呼び出しができるという部分で、今回の占いのような簡易なFlashにはピッタリです。でも私の場合は平気でRPGのデータ保存にもsharedobjectを使いますけど。えぇ。尚、Flashが再生された時点で保存されていたデータが呼び出され(ない場合は特に動きはナシ)、占うボタンを押したタイミングで保存しています。
sObject = sharedobject.getLocal("flashfortune");//flashfortune.solという保存データ名使用
上記のように設定した後は「sObject.data.xxx」という形式で中身にアクセスできます。例えばFlashの中で入力した月データを保存したり呼び出したりしたい。そんな時は…
※月を入力するテキストフィールドには変数名「month」が指定してあります
sObject.data.month = month;//テキストフィールドに入力された文字をsObject.data.monthに保存
month = sObject.data.month;//sObject.data.monthの値を呼び出しテキストフィールドに代入
■入力された数字の判定+グラフィック変更
2・4・6・9・11月は31日まで存在しないので、月データに該当月が入力されていた場合は30(29)以上を入力できないようにする。また、月に13以上の数字も入力不可とする。そしてあり得ない月日を入力できないように制御した後に、月/日両方が入力されていたら(*1)星座を割り出す。更に星座マークを1〜12まで配置しているムービークリップをgotoAndStopで目的の星座フレームまで飛ばす。
※*1ここのソースが汚いはず
■ローカル時間の日付取得(つまりPCの日付を見てます)
clock = new Date(year, month, date, hour, min, sec, ms);//取得
y = clock.getFullYear();
m = clock.getMonth()+1;
d = clock.getDate();
ここから今日の日付を出し、月/日が10日を下回る場合は「05」のように頭に「0」を補完するように仕込む。
Yahoo!占いの場合はURLが「http://fortune.yahoo.co.jp/fortune/12astro/」+「(*2)2005xxxx/」+「(*3)aries.html」となっているため、日付から取得した文字列を全部繋げて*2に代入、予め十二星座の名前を入れておいた配列から「対応する名前+.html」を*3に代入する。それをgetURLで呼べばOK。
today = yy + mm + dd + "/";//y,m,dの調整後の最終データをそれぞれyy,mm,ddとする
urlPlus = "http://fortune.yahoo.co.jp/fortune/12astro/";
urlPlus2 = ".html";
callURL = urlPlus + today + seiza + urlPlus2;//seizaは星座名文字列が入る。全部繋げて…
getURL(callURL,"fortune");//最終的にgetURLで呼び出す完全URLデータとする
たぶん、Flash中級程度の知識があれば、上記項目だけ見て作りはじめる事が できるかも知れないレベルの中途半端な解説。…と、判断。
間違い・疑問・質問などありましたらコメントください。宜しくお願い致します。
|