サンプル(携帯)


サンプル(携帯)

ParaFla!でのFLASH制作の手助けとなるケイタイ版SAMPLE集。

ここではFlash LiteやSWF6以降とは記述法が違うスクリプトとその応用法を解説するに留めたいと思っています。

端末で試験する前の簡単な動作確認は「iモードHTMLシミュレータ」を利用するとよいでしょう。

http://www.nttdocomo.co.jp/service/developer/make/content/download/index.html

使い方は、機能⇒URLを開く⇒参照⇒ファイルの種類をALL Fileにする⇒.swfをそのまま読み込む
「設定」は「バージョン5」を選択し「FOMAの機能を有効にする」にチェックする
「フラッシュ設定」の「待ち受けフラッシュ設定」のチェックは外しておく
必要であれば、「iモードHTMLシミュレータ供廚發△蠅泙垢里濃遒靴討澆討ださい。
気妊┘蕁爾出ても、兇篌袖,任脇虻遒垢襪海箸發△蠅泙后

ParaFla!付属のsample07ではスクリプトが混み入っていてどこで何の処理をしているのか理解できない人も、一つ一つ勉強することで解るようになれば幸いです。

FSCommand2

バイブレーション

fileバイブ.pfl
携帯を振動させる方法
ゲームの効果として使える

待ち受け

・デジタル時計
file待ち受け.pfl
年月日時刻・電波状況・充電残量を表示させる方法
file時間切替.pfl
携帯を開いた時刻によって背景が切り替わる機能を付加

★1:2:3を01:02:03と表示する方法★質問ページ2/152

・アナログ時計
fileアナログ.pfl
後述のテルターゲットを使ってアナログ時計を作る方法
fileアナログ改.pfl
テルターゲットを使わずにアナログ時計を作る方法
というより、プロパティにアクセスするにはテルターゲットは必要ない
どちらでも表示されるはずだが、学習のために二通り置いておく
電波状況・充電残量はデジタル時計を参照のこと


制御

SWF4にはクリップアクションが存在しないため、それに代わる制御方法
要するにフレームアクションとボタンアクションで代用するわけです

シンタックス

fileスプライト変数.pfl
ドットシンタックス(.)はスプライトのプロパティにアクセスする場合にしか使えない
階層にアクセスする場合はスラッシュシンタックス(/)、
変数にアクセスする場合はコロンシンタックス(:)を使う
例えばスプライト1のテキストをスプライト2のテキストに反映させる場合
/sp2:txt = /sp1:txt;
というようにメインのフレームアクションに書く

file拡大縮小.pfl
スラッシュシンタックス(/)とドットシンタックス(.)を組み合わせた使い方
スプライトを大きくしたり小さくしたりしてみた
但しこの場合は何故かスラッシュシンタックス(/)は省略しても構わないようだ

テルターゲット

fileテルターゲット.pfl
スプライトのプロパティや変数やメソッドに外から働きかける方法
‘辰縫瓮愁奪匹魯轡鵐織奪スがないため、これを用いる
後述の「evalを用いた配列変数の表現」を使ってスプライトにアクセスするときに使う

ボタン操作

fileボタン.pfl
画面上のボタンで操作する方法
と言っても、ボタンにフォーカスを当てるのは携帯のカーソルキーで決定するは同じくエンターキー


テンキー操作

fileテンキー.pfl
画面上のボタンではなく、携帯のテンキーで操作する方法
ここではスプライトを動かしますが、処理を変えれば様々な場面で使うことができます

fileテンキー+テルターゲット.pfl
テンキーでスプライトをラベルジャンプさせる方法
SWF4にはテンキーを離したときに元の状態に戻すASはないので工夫が必要

画面スクロール

fileページめくり.pfl
スクロールする場合はたいていテキストだろう
行送りとページめくりを2・8・#のキーで行う方法
応用すれば、スプライトに入れたテキストをスクロールすることもできる
後述のif文の知識も必要

関数

swf4で使える関数

乱数

fileランダム.pfl
乱数を取得する方法・random()
後述のif文の知識も必要

fileスライド.pfl
ランダムに画像を表示する方法
待ち受け壁紙に利用できる

fileスライド+待ち受け.pfl
待ち受け.pflにスライド.pflをインポートしてみました
ID0016〜0019のテキストを画像ファイルと差し替えてください


時間

fileタイム.pfl
時間を計測する方法・time()

整数化

file整数化.pfl
小数を切捨てし整数値を得る方法・int()

fileタイム改.pfl
ミリ秒表示を「00:00:00」表示にし、Clearボタンも追加しました
SWF4では剰余演算子(%)が使えないため、
A÷B=整数の商…剰余
ではなく
A−B×整数の商=剰余
という回りくどい演算を用いましたw

サブルーチン

fileサブルーチン.pfl
同じイベントリスト上のフレームにあるスクリプトを呼び出して実行する方法・callFrame()
再生位置は移動しないので、スクリプトの保管場所として使える

複製

fileふくせい.pfl
スプライトを複製・削除する方法・duplicateClip(),removeClip()
swf6以降とでは綴りが短くなっているので注意

論理式

条件によって処理を行わせるステートメント

if文

すでに「乱数」の項のサンプルで使っていますので、ここではその説明
fileランダム.pfl

if(A){}      条件Aに当てはまった場合{}内の処理をする
else if(B){}   条件Aには当てはまらず条件Bに当てはまった場合{}内の処理をする
else{}       そのどちらでもない場合{}内の処理をする

BであることよりAであることが優先する場合は上の書き方ですが、
Aであることによる処理、Bであることよる処理を別々に行いたい場合は下のように記します

if(A){}
if(B){}
if(C){}

Aのときは必ずBでない場合はどちらでも構いませんが、そうではない場合は意味が違ってきますので書き間違えないようにしましょう


for文

fileフォー.pfl
複数のスプライトを複製・削除することによってfor文を学習する

for (初期化式; 条件式; 再初期化式){処理}

例えば for (i=0; i<10; i++){処理} は、変数iが0〜9の整数の場合処理を繰り返すという意味になる
if文に直すと、

i=0;			//初期化式
if(i<10){			//条件式
	i++;		//再初期化式
	処理
}

のif文の部分を繰り返して一気にやってしまうわけだ

evalを用いた配列変数の表現

(例)xを配列の添字に見立てて、「var[x]に変数yの値を代入」したい
 FLASH4  : eval( "var" add x ) = y; 
 ParaFla : ( "var" & x ) = y;

  ※evalが代入式の左辺に来る場合は、evalを書かずに括弧だけにします

(例)同じく「変数yにvar[x]の値を代入」したい
 FLASH4  : y = eval( "var" add x ); 
 ParaFla : y = valueOf( "var" & x );

  ※evalが代入式の右辺に来る場合は、evalの代わりにvalueOfを使用します

(例)同じく「var[x]と変数yの値を比較」したい
 FLASH4  : eval( "var" add x ) == y 
 ParaFla : valueOf( "var" & x ) == y 

  ※if文の条件式で比較するときは左辺でもvalueOfを使用します

file文字列比較.pfl
文字列の比較演算子は「===」「!==」です

valueOf( "var" & x ) === "文字列"

参考:質問ページ2/116

工夫

swf4にはないメソッドや関数をできることで代用するアイデア

繰り返し処理

fileループ.pfl
SWF4ではonEnterFrame?=function(){};やonClipEvent?(enterFrame){}が使えないので、フレームアクションをループさせて繰り返し処理を行う

fileロード.pfl
SWF4ではonClipEvent?(load){}が使えないので、スプライト内のフレームアクションに書く
また、スプライト内のラベルや変数にアクセスするにはtellTarget()を使わなければできないが、スプライトのプロパティには直接働きかけることができる

file子から親.pfl
スプライトからメインに働きかける場合は、メインにある変数にアクセスして間接的に処理する
スプライトからは「/:」を使うことでメインの変数にアクセスすることができる
ここでは、その方法を使ってスプライトの中からメインをラベルジャンプさせる

file跳ね返り.pfl
繰り返し処理によってスプライトを画面の中で飛び回らせる方法

fileテンキー動.pfl
携帯によってはテンキー操作で押しっぱなしができない機種もあるため何度もクリックしなければならない
押しっぱなしができる機種でもon(keypress "")だと連続動作までに間が空いてしまう
その回避策

当たり判定

file当たり判定.pfl
SWF4ではhitTest()が使えないので、「相手のxy座標に近づいたら」というスクリプトで代用する
スラッシュシンタックス(/)の使い方
「跳ね返り.pfl」と「テンキー.pfl」の知識が必要
file当たり判定.swf

配置

file行配置.pfl
メインのfor文内でtellTarget(インスタンス)関数を使う場合は、
インスタンスからメインの変数へアクセスしなければならないことになる
それによって、複製したインスタンスの配置を決める方法
スラッシュシンタックス&コロン(/:) の使い方

file行列配置.pfl
SWF4では剰余演算子%が使えないため力技で列配置する

fileマップ.pfl
RPG用のマッピング方法
動作が目で解るようにマスを行列配置したが、マップを描いた画像に差し替えるとよいだろう


画像を使う

PDRも必要なためZIPにしてあります

オリジナル時計

file画像時計.zip
数字に自分で描いたPDRを使った時計を作る方法
ここでは高さ32ピクセルの数字を縦に並べたPDRを作り、高さ32ピクセルのマスク用PDRでマスクした上で、時刻に応じてY座標を動かし表示させる

サウンドを使う

ボタンで音声

fileボタンで音声.zip
携帯のボタンを押したときに音声を鳴らす方法
ここではmmfで使っていますが他のサウンドファイルでも作り方は同じです

ゲーム

これまでのスクリプトを使って製作できるゲーム

ブロック崩し

fileブロックくずし.pfl
差の絶対値を求め、反発する処理を変えてみた

fileブロック崩し.pfl
失敗作、絶対値化していなかったorz
あえて晒しておこう

シューティング

fileシューティング.pfl
連射が5発しかできない代わりに、地雷のように留まるようにしてみた
このくらいのゲームだと「シミュレータ機廚任魯┘蕁爾出るが、
「シミュレータ供廚覆薀轡潺絅譟璽肇癲璽匹鮠紊欧譴佛Ъ韻靴討れる

射的

file射的.pfl
的が動き回るモグラタタキゲームという感じ


RPG

fileRPG.pfl
テキストだけじゃ雰囲気は出ないが参考までに一面だけ作った
一応、脱出に要するタイムを競うゲームにしてみた
ダンジョン風の背景をつけ、クリアの代わりに変数floorを増減したり、
その他もろもろの要素を増やしていけば本格的なRPGも作れるだろう

応用

file雪.pfl
雪景色の中でアニメを動かす

file雪改.pfl
雪の手前に画像を置くには、メインをそっくりスプライトに入れてしまえばよい

汽車

file汽車.pfl
前出の「雪」を改造してみました
複製される場所をスプライトの移動に合わせて動かす方法

羽が落ちる

fileゆらゆら.pfl
羽がゆらゆらと左右に揺れながら落ちるような表現方法
SWF4ではMath.sinが使えないので、加算値nにmを加減する方法をとっている
それによって加算値nが、1・2・3・4・5…となり加速をさせることができる
またif(n >15 || n < -15){m = -m;}とすることで…14・15・16・15・14…0…-14・-15・-16・-15・-14…と減速に転じさせることができる
つまりnに16〜-16の間を行き来させることでスプライトに振り子運動を加えたわけだ
スプライトのループ部のスクリプトにtrace(n);を書き、どうゆうことか確かめてみよう
※AS訂正

timer = random(20);			//定数20を大きくすると出現率が下がり、小さくすると出現率が上がる
if(timer == 0){
	duplicateClip("hane","hane" + count ,count);
	count ++;
	if(count >20){count = 0;}
}

質問&要望

  • ページを作成しました。見出しなどいい加減ですが、編集していくうちに整理したいと思っています -- 2008-02-23 (土) 17:15:20
  • ランダムで画像を選んで表示した後でジャンプさせようとしてもうまくできません。 -- 教えて君? 2008-05-01 (木) 21:44:34
  • 続き…上にあるサンプルはそこで処理終了ですが、続けて処理をさせたい時にどうすればよいか教えてくださいませ。(例)三枚の画像があるとします。携帯の待ち受け設定にしておいて、携帯を開くとランダムでどれかの画像が出ます。その後、fscommandを使った処理が続く…。というものを作りたいのですが…。 -- 教えて君? 2008-05-01 (木) 21:51:24
  • 待ち受け.pflにスライド.pflをインポートし数値を多少替えてみました。参考にしてください
    fileスライド+待ち受け.pfl -- 2008-05-01 (木) 22:36:27
  • 上記はランダムですが、時刻によって切り替わる待ち受けサンプルも上げました
    file時間切替.pfl -- 2008-05-02 (金) 13:12:48
  • ご親切にありがとうございます!サンプルをよく研究したいと思います。 -- 教えて君感謝感激!? 2008-05-04 (日) 22:30:37
  • 図々しいお願いで申し訳ないのですが、携帯メニューのサンプルをお願いしたいです>< -- ひぃ? 2008-05-20 (火) 22:08:51
  • メニューは以前作ったのですが自分のSoftBank?では検証できないので
    fileメニュー.pfl
    動作するようでしたらメーカーと機種と結果を教えてください -- 2008-05-22 (木) 13:15:23
  • 携帯サイトをフルフラッシュにしたいのですが、同じ系統のサイトであるフラッシュ内でのスクロールの方法がわかりません。もしよければ、サンプルかやり方を教えていただきのですが・・・お願いします。 -- しろ? 2008-07-05 (土) 22:30:55
  • 大変恐縮ですが、携帯クロスメニューのサンプルをお願いしたいのですが -- stage61s? 2008-07-06 (日) 11:31:39
  • 「当たり判定.pfl」をうpし忘れていたことに、いまさら気づきましたorz -- 2008-07-14 (月) 22:54:20
  • 先日はお世話さまでした。今回はストップウォッチの作成についてです。サンプルpflは秒の累計の表示ですが、それを例えば95秒なら0:1:35と表示させようとしていますがうまくできません。また、携帯に触ってないと私の携帯(W33SA)では3分で画面表示が固まってしまいます。これの解除方法がありましたら伝授よろしくお願いします。 -- 教えて君2回目? 2008-07-31 (木) 21:40:54
  • fileタイム改.pfl作ってみました。また、端末の仕様については答えようがありません -- 2008-08-02 (土) 11:00:24
  • 忙しい中お手数おかけしました。どうもありがとうございました! -- 教えて君2回目? 2008-08-02 (土) 19:22:00
  • アニメの吹き出しのようなものはどうやって作ったらよいのでしょうか? -- sa? 2008-11-15 (土) 02:51:01
  • アニメに吹き出し?マンガのような? -- 2008-11-15 (土) 07:40:41
  • 携帯で雪を降らせたいのですが...できれば奥行のある様な。方法があったら教えてください。 -- 66? 2008-11-24 (月) 21:31:01
  • とりあえず作ってみましたが、フィルタが使えないので、奥行は不透明度と大きさを変えることで表現してみました -- 2008-11-25 (火) 11:32:49
  • すっごく嬉しいです)^o^( ありがとうございました! -- 66? 2008-11-25 (火) 23:44:49
  • 携帯FLASHでパソコンのローカル保存みたいにデータを保存する方法を教えてください -- 抹茶? 2009-01-12 (月) 19:18:52
  • 自分が知る限り方法はありません -- 2009-01-12 (月) 22:56:32
  • データフォルダに保存していればSharedObject?でできる。ただし、2.0対応機種のみ。 -- 2009-01-25 (日) 18:27:18
  • 待受けFlashで、通常の画面とは別に、特定した日付(誕生日など)にテキストや画像を変える方法があったら教えてください。宜しくお願いします。 -- 66? 2009-02-24 (火) 20:56:26
  • ↑2 softbankは無理っぽい。wikiの使い方が分からないから外部にまとめてみました。↓に続く。 -- M.P? 2009-03-17 (火) 03:21:41
  • 余分なら消してください。http://monja49.blog40.fc2.com/blog-entry-189.html -- M.P? 2009-03-17 (火) 03:23:08
  • スプライト自体を左右反転表示する方法はありますか? -- deer? 2009-03-25 (水) 21:07:47
  • サイズを1:-1 -- 2009-04-23 (木) 18:51:58
  • サンプルの雪をswf6で再生したいのですがどうしたらいいですか? -- 55? 2009-08-29 (土) 11:58:02
  • SWF6以降はサンプルpfl.にあります -- 2009-08-31 (月) 21:08:24
  • フィールド試作.zipの場所を間違えて上げてしまったので除去お願いします。申し訳ありません。 -- 2009-09-01 (火) 23:05:37
  • ソフトキー(↑↓←→○)での操作は、どのように割り当てれば良いのですか? -- なっくん? 2010-07-24 (土) 00:33:15
  • ソフトキーはFLASHの操作に割り当てることはできないようです -- 2010-07-25 (日) 18:02:01
  • 取得した時間(hh時mm分)を元に、ルールに従い命名したファイルを呼び出す「時間切替」はどのように記述したらよろしいでしょうか? (ルール)hh時mm分の場合、"hhmm.jpg"を呼び出す。 (例)12時50分の場合、"1250.jpg"を呼び出す。(24時間ではなく12時間で動作させたい) -- MA? 2010-11-17 (水) 10:58:35
  • どうやっても不正データとなり携帯で見ることができません。SH008で待ち受けにしたいのですがどうすればいいでしょうか?? -- 2011-04-29 (金) 16:56:31
  • http://www.nttdocomo.co.jp/service/developer/make/content/download/index.html -- iモードHTMLシミュレータ? 2011-12-02 (金) 18:33:09
  • ページ内のリンクも差し替えました。報告ありがとうございます -- 2011-12-02 (金) 21:45:37