ゲームなどのように
条件によって行動が異なるようなFLashの場合、
どこかでループしてやる必要があるのだけれど
スクリプトが、いろいろなところに点在すると
見通しが悪いので
1フレーム
#include "./as/game.as"
2フレーム
gotoAndPlay(1);
のようにして
game.asに制御をまとめるのがわかりやすい
全てのムービークリップはスクリプトから制御できるからだ
1フレーム
#include "./as/game.as"
gotoAndPlay(1);
でもいいじゃないかと思ったりもするが、これは動かない
最小で2フレームでループさせることになるのだけれど、
この時、1フレームの画像は表示するが
2フレーム目の画像は表示しないようだ
スクリプトは
1フレーム
2フレーム
と実行されているが
画像が見られるのは1フレームで
2フレームの画像は変化が無い
そんでもって
fpsを1にしてみると
秒でカウントアップしているようで
1フレーム
2フレーム
で
1フレーム分の時間ということになっているようだ。
どういう理屈なのか、理解に苦しむのだけど
そういうことになっているのだから仕方ない。
なわけで
じゃぁ、ってこって
1フレーム
の終わりに
gotoAndPlay(2);
としてみる
動作的には、同じ事で、自然に行くか
スクリプトで行くかの違いだ。
するってーと
どうなるかってーと
スクリプトが…
要するに無限ループ的なものになっているらしい
ってことは
スクリプトで動いたフレームは
描画されないし、その時間が動くわけでなく
流れで動いたフレームしか絵が反映されないし
fpsで設定される
時間経過も反映しないってことみたいだ。
なるほど、そういうことか。
でも、
スクリプトが…
とエラーを出しながら絵が表示されてはいたから
絶対表示しないってことも無いのかもしれないな
2010年5月17日月曜日
2010年5月16日日曜日
Flash覚書3
あるものを段々速く動かす
なんて事をやる場合
例えば10fpsで
10フレームのものを動かすと
1秒で1フレーム動くというムービーになります。
もっと速く動かしたいなら
次を2フレーム飛ばせば、それらしく見えます
遅くしたいなら、
次でそのままにすれば、それらしく見えます
でも、これでは、速度は2倍、1/2で
その間がありません。
この間の速度を作るには、どうしたらいいか
0から9で間をあらわせません。
0から99なら10個の間が出来ます
実際には10フレームしかないので
画面に反映させる直前で0から99のspを
フレーム数にあわせて10で割ります。
fr = int(sp / 10);
tellTarget ("obj"){
gotoAndStop(_root.fr);
}
要するに大きい値で計算しておいて
画面に落とす時、
その分で割ってやるってこと。
なんて事をやる場合
例えば10fpsで
10フレームのものを動かすと
1秒で1フレーム動くというムービーになります。
もっと速く動かしたいなら
次を2フレーム飛ばせば、それらしく見えます
遅くしたいなら、
次でそのままにすれば、それらしく見えます
でも、これでは、速度は2倍、1/2で
その間がありません。
この間の速度を作るには、どうしたらいいか
0から9で間をあらわせません。
0から99なら10個の間が出来ます
実際には10フレームしかないので
画面に反映させる直前で0から99のspを
フレーム数にあわせて10で割ります。
fr = int(sp / 10);
tellTarget ("obj"){
gotoAndStop(_root.fr);
}
要するに大きい値で計算しておいて
画面に落とす時、
その分で割ってやるってこと。
2010年5月5日水曜日
Flash覚書2
訳のわからないエラーがでる場合がある
プロセスエラー
これは、ちょっとした間違いなのだけど
やたら多く、本来とは違うところを示したりする
たとえば
tellTarget ("game01/ob" add i+4){
gotoAndStop(_root.n-9);
}
一見、何が間違っているかわからないけど
tellTarget ("game01/ob" add (i+4)){
gotoAndStop(_root.n-9);
}
カッコがたりないのだ
プロセスエラー
これは、ちょっとした間違いなのだけど
やたら多く、本来とは違うところを示したりする
たとえば
tellTarget ("game01/ob" add i+4){
gotoAndStop(_root.n-9);
}
一見、何が間違っているかわからないけど
tellTarget ("game01/ob" add (i+4)){
gotoAndStop(_root.n-9);
}
カッコがたりないのだ
2010年4月9日金曜日
Flash覚書
シーン3から
シーン4
シーン4から
シーン5
というようにボタンを押すと動作するというFlashがあって
ある条件で
シーン3から
シーン5
に行かせようとしたところ
行かない
???
何で?
gotoAndPlay("シーン5","xxxx");
これは、シーン4のスクリプトから
コピーしてきたものだ。
シーン1からシーン5に飛ばしてみるか…
飛ばないや
えっ?
このシーンからは来ないようにするなんて
設定でもあったっけ…
調べてみるが、そのような設定はなく、
gotoAndPlayについてラベルに飛ぶのだという記述。
?
シーン5の
ラベル
xxxx
あっ?
シーン5のラベルを確認した
xxxy
違うんでやんの
そう。
シーン4からシーン5に飛ぶのが、おかしいのか
本来ならシーン5に行かないのが正解だ
えーーっ?
どういうこと?
行かなかった、謎は解明できたけど
なんで飛ぶんだろ
シーン4
シーン4から
シーン5
というようにボタンを押すと動作するというFlashがあって
ある条件で
シーン3から
シーン5
に行かせようとしたところ
行かない
???
何で?
gotoAndPlay("シーン5","xxxx");
これは、シーン4のスクリプトから
コピーしてきたものだ。
シーン1からシーン5に飛ばしてみるか…
飛ばないや
えっ?
このシーンからは来ないようにするなんて
設定でもあったっけ…
調べてみるが、そのような設定はなく、
gotoAndPlayについてラベルに飛ぶのだという記述。
?
シーン5の
ラベル
xxxx
あっ?
シーン5のラベルを確認した
xxxy
違うんでやんの
そう。
シーン4からシーン5に飛ぶのが、おかしいのか
本来ならシーン5に行かないのが正解だ
えーーっ?
どういうこと?
行かなかった、謎は解明できたけど
なんで飛ぶんだろ
2008年3月19日水曜日
Flash覚書
非常に忘れやすくなった
かつてやったことなのに
どうやったんだっけなぁ
って
また調べなおすなんてことがあるもんだから
書き留めて置くようにしている
ということで
FlashでPodCastingXMLリストからMP3をプレーヤーのように
Flashで
XMLファイルを使うには
XpathAPIを使うのが便利である
Xpathの使い方は、
第33回 ActionScriptでXMLデータを自由に検索・抽出してみよう:ITpro
を参考にするといい。
ただ、2004Proの場合
DataBindingClasses
というのを作っておかないと使えないっぽい
今回は、リストコンポーネントから
コンポーネントインスペクタの
「スキーマ」から「サンプルXMLからスキーマを読み込み」で
サンプルとなるXMLを指定する
次に
「バインディング」にして「+」で「バインディングの追加」ダイアログから
「dataProvider:XML」を選択して「OK」
次に
「名前」「bound to」のところの値の方が空白になっているので
そこをクリックすると
虫眼鏡のアイコンをクリックするとダイアログが現れ
入れる項目を指定
コンポーネントを指定してスキーマを選択
これで、読み返してわかるかなぁ、自分
かつてやったことなのに
どうやったんだっけなぁ
って
また調べなおすなんてことがあるもんだから
書き留めて置くようにしている
ということで
FlashでPodCastingXMLリストからMP3をプレーヤーのように
Flashで
XMLファイルを使うには
XpathAPIを使うのが便利である
Xpathの使い方は、
第33回 ActionScriptでXMLデータを自由に検索・抽出してみよう:ITpro
を参考にするといい。
ただ、2004Proの場合
DataBindingClasses
というのを作っておかないと使えないっぽい
今回は、リストコンポーネントから
コンポーネントインスペクタの
「スキーマ」から「サンプルXMLからスキーマを読み込み」で
サンプルとなるXMLを指定する
次に
「バインディング」にして「+」で「バインディングの追加」ダイアログから
「dataProvider:XML」を選択して「OK」
次に
「名前」「bound to」のところの値の方が空白になっているので
そこをクリックすると
虫眼鏡のアイコンをクリックするとダイアログが現れ
入れる項目を指定
コンポーネントを指定してスキーマを選択
これで、読み返してわかるかなぁ、自分
登録:
投稿 (Atom)