FC2ブログ

音携闊歩

音楽をより楽しむための個人的見解。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-) |
久々の更新です。
ケータイはあれから考えられないほど進化しました。iPhoneやExperiaのようなあれだけタッチが機能するとは考えもつきませんでしたね。マルチタッチデバイスの開発ってのが結局は起因していると思うのですが、やはりあらゆる進化なり改革は、デバイスの進化とセットになるんですね。核弾頭にしろ四輪自動車にしろそもそもニューデバイス(当時はデバイスと呼ばれていないけど)のおかげ。

それに引き換えケータイに搭載されているFlashは進化ナシ。5年前くらいから変わってない。これはデバイスうんぬんより、ユーザが求めてないからなんでしょうね。事実WebでのトレンドはJavascript。ケータイFlashも当分動きはないし、もしかしたらスマートフォンでは不要サービスになるかもしれないですね。さてさて、どうなることやら。
スポンサーサイト
FlashLite1.1はアイディア次第で、いろいろなものが作れます!!何か面白いアイディア浮かばないかなぁ…浮かばない。なんでアナログ時計でも作ってみることにしました。デジタル時計ができる人なら、間違いなく簡単にできるでしょう。
アナログ時計は時分秒をそれぞれ取得する方法を使います。今までの時計作成シリーズでは「FScommand("GetLocalTime", "time")」として、変数「time」に時分秒を格納していましたが、アナログ時計は短針と長針の角度を計算しないといけないので、それぞれを取得した方が簡単なのです(もちろん「GetLocalTime」+「substring」でできますが)。

■Flash待受作成(アナログ時計作成)
使用したソフト:
Macromedia FlashMXPro2004(ver.7.2)

初期設定:
・画面サイズを240*320にします(テンプレートを使用しても可)
・パブリッシュ設定をFlashLite1.1にします。

①アナログ時計用背景を用意します。時計の中心が分かるように目印を付けておきます(パブリッシュ前に削除)。

②メインフレームにデジタル時計表示用のダイナミックテキストと、年月日表示用のダイナミックテキストを用意します。変数は以下のように設定します。
時:hr
分:min
秒:sec
年:y
月:m
日:d
曜日:w

③短針と長針(画像/ベクター)を用意し、それぞれをMovieClip(以下MC)にして、インスタンス名を「hour」と「minute」とします。このとき各MCの基準点が回転する中心にくるようにします。

④次はスクリプトを書いていきます。
・メイン1フレーム目アクション
//時の取得
hr = fscommand2("GetTimeHours");
//分の取得
min = fscommand2("GetTimeMinutes");
//秒の取得
sec = fscommand2("GetTimeSeconds");
//年の取得
y = fscommand2("GetDateYear");
//月の取得
m = fscommand2("GetDateMonth");
//日の取得
d = fscommand2("GetDateDay");
//曜日の取得
w = fscommand2("GetDateWeekday");
//曜日の表示文字
switch (w) {
case 0 :
w = "sun";
break;
case 1 :
w = "mon";
break;
case 2 :
w = "tue";
break;
case 3 :
w = "wed";
break;
case 4 :
w = "thu";
break;
case 5 :
w = "fri";
break;
case 6 :
w = "sat";
break;
}
//アナログ時計の表示
hour._rotation = hr*30+min*0.5;
minute._rotation = min*6;
//桁の追加
if (hr<=9 and hr>=0) {
hr = 0 add hr;
}
if (min<=9 and min>=0) {
min = 0 add min;
}
if (sec<=9 and sec>=0) {
sec = 0 add sec;
}
※時分秒をそれぞれ取得します。角度は「60分=360度」なので「1分=6度」、また「24時間=360度」なので「1時間=30度」、さらに短針は長針が1周(360度)すると30度動くので、30÷360=0.5となっています。また「GetTimeHours/Minutes/Seconds」は1桁の数字の場合、1桁しか変数を返さないので、0を追加します。

・メイン2フレーム目アクション
gotoAndPlay(1);
※1フレーム目に戻って時刻等の取得をループさせます。

⑤時間によって背景を変えるので、MC「back」を作成します。4枚の背景画像を使用したので、2/3/4/5フレームに画像を配置(1フレーム目は空白)します。時間による背景の切り替えについては、Flashケータイ⑤で詳しく解説していますので、そちらを参照してください。今回は6:00~10:59、11:00~15:59、16:00~18:59、19:00~5:59の4つに分けて背景を変えています。
・MC「back」1フレーム目アクション
stop();
m = fscommand2("GetTimeHours");
if (6<=m and m<=10) {
gotoAndPlay(2);
break;
} else if (11<=m and m<=15) {
gotoAndPlay(3);
break;
} else if (16<=m and m<=18) {
gotoAndPlay(4);
break;
} else {
gotoAndPlay(5);
break;
}
このアクションを2~5フレーム目にそれぞれ記述(コピー)します。

⑥次はランダムに発生するイベントを作ります。MC「rnd」を作成します。イベントにもよりますが、長いアニメーションを作る場合は、ラベルを作成しておくとアニメーション変更時に作業がとても楽になります。
発生するイベントの確率を「1/30秒」に設定します。こちらは任意で変更してください。
・MC「rnd」2フレーム目アクション
//ランダムな整数の発生
rnd = Math.floor(Math.random()*180);
//処理
if (rnd==0) {
gotoAndPlay("event01");
} else if (rnd==1) {
gotoAndPlay("event02");
} else {
gotoAndPlay(1);
}

1フレーム目を空白(何も表示せず1と2をループさせる)にして、2フレーム目にランダム発生用スクリプト、3フレーム目以降にイベント表示用アニメーションを挿入しています。このファイルではラベル「event01」と「event02」を作成しています。発生確率を変更する場合は、「rnd = Math.floor(Math.random()*180);」の「180」を変更してください。大きくすると確率は下がります。今回はフレームレートが12fpsで作成していますので、「rnd」は1秒間に6つ生成されることになりますので、180倍すると「1/30秒」になる計算になります。

⑦書出し(パブリッシュ)→SD転送

これで完成です。今回は「GetTimeHours/Minutes/Seconds」を使用したので、PCでの確認が可能です(スタンドアローンではFScommandを認識しないため不可)。新しく取り入れたのは「アナログ時計」と「ランダム処理」だけなので、それ以外での説明不足は過去の「Flashケータイ」を参照してください。
結構骨の折れる内容でしたが、納得いくものが作れたので満足☆素敵なアイディアありがとさんでした。

>>Sample Data 72kb(swf)
Flashをケータイで表示できる機種がどんどんでてきました。問題はファイルサイズ制限とCPU。ファイルサイズはまだいいとして、CPUもっとガンバレ。CPUというかグラフィックでしょうかね…。今回はCPU負荷が高いswfを作成してみます☆
ケータイ用Flash時計作成は過去にやりましたが、時計の数字を画像でやってみようとの試みです☆流れとしては①時分秒を1桁の数字として変数に代入②それぞれの数字を画像に置き換えて(フレームを移動させて)表示③ループさせる、です。

■Flash待受作成(時計数字画像作成)
使用したソフト
Macromedia FlashMXPro2004(ver.7.2)

初期設定:
・画面サイズを240*320にします(テンプレートを使用しても可)
・パブリッシュ設定をFlashLite1.1にします。
・0~9までの画像(png/jpg/gifなどFlashで読み込めればなんでも可)

①表示する数字のMovieClip(以下MC)「数字」を作成します。MC「数字」内の1~10フレーム目にそれぞれ1~0までの画像を挿入します。
1フレーム目:画像1(数字が1)
2フレーム目:画像2(数字が2)



10フレーム目:画像10(数字が0)
これで表示する画像の準備ができました。

②MC「数字」内のアクションを記述します。
・MC「数字」1フレーム目アクション
stop();
switch (num) {
case "0" :
gotoAndPlay(10);
break;
case "1" :
gotoAndPlay(1);
break;
case "2" :
gotoAndPlay(2);
break;
case "3" :
gotoAndPlay(3);
break;
case "4" :
gotoAndPlay(4);
break;
case "5" :
gotoAndPlay(5);
break;
case "6" :
gotoAndPlay(6);
break;
case "7" :
gotoAndPlay(7);
break;
case "8" :
gotoAndPlay(8);
break;
case "9" :
gotoAndPlay(9);
break;
}
このアクションを1~10フレーム目までに記述(コピー)します。

③このMC「数字」をメインフレームに6個配置します。これは時間(2桁)/分(2桁)/秒(2桁)用になります。それぞれを配置したらインスタンス名を以下のように記述します。
(左から)hour2/hour1/min2/min1/sec2/sec1
これで時間表示の準備ができました。

④最後にメインフレームのスクリプトです。今回は時刻の表示のみ記述しますが、もちろん月日/曜日/電波状況/電池残量の表示は可能です。月日/曜日等の表示に関してはFlashケータイ②を、電波状況/電池残量に関してはFlashケータイ③を、またFlashケータイ⑤待受まとめ参照してください。
・メイン1フレーム目アクション
//時刻の取得
watch = fscommand2("GetLocaleTime", "time");
//時刻をそれぞれ変数に代入
sec1.num = substring(time, 8, 1);
sec2.num = substring(time, 7, 1);
min1.num = substring(time, 5, 1);
min2.num = substring(time, 4, 1);
hour1.num = substring(time, 2, 1);
hour2.num = substring(time, 1, 1);
※substringを使ってそれぞれの数字を1桁ずつ変数に代入するわけですが、PCとケータイで取得する「GetLocaleTime」は異なります。例えば「12時34分56秒」の場合PCだと、「12:34:56」という8文字が変数「Time」に代入されますが、ケータイの場合「012:34:56」の9桁が代入されます。ですのでPCで書き出したときにおかしくなっていても、ケータイではきちんと表示されるのでご安心を。

⑤書出し(パブリッシュ)→SD転送

以上で完成です。
いろいろ試しながらやってみましたが、FlashLiteはFlash4が基準となっているので、使用できるスクリプトが限定されています(Flash5以降に慣れている人は特に)。非常に困りながらやってみて、出来上がったのがこれかぁ…という感じです。もう少しスマートなスクリプトがあるのではないかと思っています☆これ以外では、オリジナルフォントを作成して、ダイナミックテキストに埋め込むという方法があります。おそらくこちらの方がラクにできるのではないかと思いますが、フォントを作成できる環境にある人は少ないのでは…。
次は何をやってみよ~かなぁ…思いつかん。どなたか面白いアイディア下さい☆

>>Sample Data 25KB
Flash時計に数字画像を使用する


FlashLiteダウンロード/アップ板が増えてきました☆多くの人は著作権を気にしていないようですね…。著作権問題はデジタル化が進むにつれてうるさくなっていく問題(日本は遅れていますが)なので、著作権法にふれるのは避けたいですな~。

今回はFlashLite1.1の待受け最強!!を作ります。できることをできるだけ盛り込んでみたいですね☆
1)時計/日付
2)電波状況
3)電池残量
4)昼と夜の背景
5)指定日にメッセージ

Flashケータイ③Flashケータイ②のファイルを使ってやりますので、そちらも参照してください。

■Flash待受作成(まとめ)
使用したソフト
Macromedia FlashMXPro2004(ver.7.2)

初期設定:
・画面サイズを240*320にします(テンプレートを使用しても可)
・パブリッシュ設定をFlashLite1.1にします。

①時計を作成します。これはFlashケータイ②を参照してください。

②電波状態を表示します。前回とは異なり、数字ではなく絵で表示します。
1)電波状態用MovieClip(以下MC)「signal」を用意します。
2)「signal」内の各フレームに画像(またはベクター)を挿入します。
・1フレーム目-Blank
・2フレーム目-圏外
・3フレーム目-電波0本
・4フレーム目-電波1本
・5フレーム目-電波2本
・6フレーム目-電波3本
3)次に「signal」のアクションを記述していきます。
・「signal」1フレーム目アクション:
stop();
//現在の電波状態
sig = fscommand2("GetSignalLevel");
switch (sig) {
case "0" :
gotoAndPlay(2);
break;
case "1" :
gotoAndPlay(3);
break;
case "2" :
gotoAndPlay(4);
break;
case "3" :
gotoAndPlay(5);
break;
case "4" :
gotoAndPlay(6);
break;
}
4)このアクションを2~6フレーム目にも記述します。
5)以上でMC「signal」は完成です。

③電池残量を表示します。こちらも前回とは異なり、数字ではなく絵で表示します。
1)電池残量用MC「battery」を用意します。
2)「battery」内の各フレームに画像(またはベクター)を挿入します。
・1フレーム目-Blank
・2フレーム目-残量0
・3フレーム目-残量1
・4フレーム目-残量2
・5フレーム目-残量3
・6フレーム目-充電中
3)次に「battery」のアクションを記述していきます。
・「battery」1フレーム目アクション:
stop();
//現在のバッテリーレベル
batt = fscommand2("GetBatteryLevel");
//外部電源かバッテリー電源か
power = fscommand2("GetPowerSource");
if (power == 1) {
gotoAndPlay(6);
} else {
switch (batt) {
case "0" :
gotoAndPlay(2);
break;
case "1" :
gotoAndPlay(3);
break;
case "2" :
gotoAndPlay(4);
break;
case "3" :
gotoAndPlay(5);
break;
}
}
4)このアクションを2~6フレーム目にも記述します。
5)袋の大きさをバッテリー量で変えたいので、袋の大きさを変えたアニメーションをそれぞれのフレームに挿入します。
6)以上でMC「battery」は完成です。

④昼と夜で背景を変えます。6:00~18:00を昼と設定しました。もちろん設定次第で春/夏/秋/冬や朝/昼/夜/深夜等も可能です。
1)背景用MC「back」を用意します。
2)「back」内の各フレームに画像(またはベクター)を挿入します。
・1フレーム目-Blank
・2フレーム目-昼
・3フレーム目-夜
3)次にアクションを記述していきます。
・「back」1フレーム目アクション:
stop();
back = fscommand2("GetTimeHours");
if (back>5 and back<18) {
gotoAndPlay(2);
}else{
gotoAndPlay(3);
}

4)このアクションを2,3フレーム目にも記述します。
5)以上でMC「back」は完成です。

⑤指定日にメッセージを表示します。誕生日を指定すると良いかもしれません。
1)メイン1フレーム目アクション:(時計処理の続きに記述)
//誕生日の処理(例では4/19・4/20・5/1)
comm.flag = "0";
switch (m) {
case "4" :
switch (d) {
case "19" :
comm.flag = "1";
comm.mbox = "サンタさん¥n誕生日おめでと!!";
break;
case "20" :
comm.flag = "1";
comm.mbox = "タクロースさん¥n誕生日おめでと!!";
break;
}
break;
case "5" :
switch (d) {
case "1" :
comm.flag = "1";
comm.mbox = "クロースさん¥n誕生日おめでと!!";
break;
}
break;
}
2)メッセージ用MC「comm」を用意します。
3)「comm」内の各フレームに画像(またはベクター)を挿入します。
・1フレーム目-Blank
・2フレーム目-メッセージ表示用ダイナミックテキスト「mbox」
4)次に「comm」のアクションを記述していきます。
・「comm」1フレーム目アクション:
stop();
if (flag == "1") {
gotoAndPlay(2);
}
・2フレーム目アクション
stop();
5)以上でMC「comm」は完成です。

⑥書出し(パブリッシュ)→SD転送

非常に長いものになってしまいました。Blogに書くような内容じゃないですね…。さらなる拡張方法としては、前述の春夏秋冬、「signal」および「battery」内の各フレームにMCを挿入してアニメーションを付加などです☆最終的にはケータイの表示能力との兼ね合いになってくるので、試しながらというところですかね。今回もSampleを用意しましたが、動きがかなりモッサリです…。
大切な人の誕生日を忘れがちなのでこれでOKです☆

>>Sample Date 37k
Flash待受まとめ「昼」Flash待受まとめ「夜」
大切なことを忘れてました…。WebにUPすると言っておきながら、ダウンロードタグを忘れてしまいました☆着Flash用のダウンロードタグです。これは.htaccessを準備する必要がありません。Flashなのでほとんど全てのサーバで対応されているはずですから!!ホントにFlashは着うた(R)と違って使い勝手がいいですねぇ☆

■au ダウンロードタグ(swf) -着Flash-
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html>
<head>
<title>Title</title>
</head>
<body>
<object data="http://****.swf" type="application/x-shockwave-flash" copyright="yes/no" standby="htmlに表示される文字">
<param name="disposition" value="devfl8r" valuetype="data" />
<param name="size" value="ファイルサイズ(バイト)" valuetype="data" />
<param name="title" value="タイトル" valuetype="data" />
</object>
</body>
</html>


これでようやくケータイで着Flashが設定できます☆WebにUPしなくてはいけないのはどうにかならないものか…。ちなみにFlashはSDカード等にコピーできません…。これもどうにかできないかなぁ…。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。