追記。 >左クリック→on(press)反応→ラベルジャンプ→左離す→on(release)反応 >ってことですか? >もしそうならon(press)は左をクリックした後離さなくても動作するってことですか? >それとも離した後動作するけどpressとreleaseで二重に反応するということ? という質問をいただきました。 on(press)は左をクリックした後離さなくても動作します。 本当に押した瞬間反応。 だから、それでSWFが動作した後はマウスを押してある状態になってるので、 フレーム移動したところに「マウスおしてる状態だったら〜〜」 なんていうASがあったら、そいつが勝手に動作しちゃいます。 左クリック→on(press)反応→ラベルジャンプ→左離す・・・前に「左押してたら〜〜」が動作。 そんなの困りますよね。 まあ、置かなきゃいいじゃん、という話もありますが、 あとでどんな改造したくなるかわかりませんしね。 ボタンに関しては、上の訂正で書いたとおり、 on(release)はそのボタンの上で左ボタンを押すところからやらなきゃ反応しないので、 よくよく考えると一番上のようなことは起きません。ごめんなさい。 |
50×50程度の何かの絵を書き、それが以下の動きをする300×300程度のSWFを作る。 ・最初はSWFの左上から右上に動いて停止。または最初から左上で停止。 ・その後は、その絵をクリックするたびに右上→右下→左下→左上→右上・・・と移動する。 移動の際に転がるとか加速減速するなどの追加効果を入れてももちろん可。 停止の方法はASじゃなくても、アクションの挿入→停止でもかまいませんが、 練習のためにonイベントハンドラは必ず使ってください。 絵はなるべく中を塗ったものの方がいいでしょう。 (塗ってないところはクリックに反応しませんので。) どうしても中を色をつけたくない場合や、下の例のように塗れない場合は、 うしろに背景と同じ色かアルファ0の四角形を絵と同じサイズでおいておきましょう。 (参考:今回のソースのonigiri.pdrをひらくと、実は後ろに黒い四角がおいてあるのがわかります。) |
追記。 >>Trainingのおにぎり >なんで動いてる最中にクリックしてもそこで別の動きになったりしないんだろう という質問?をいただきました。 出している命令は、動き方を変えろ、という命令ではなく、 動くおにぎりがおいてあるMCの再生を開始しろ、という命令です。 なので、再生中に再生しろという命令を出しても、今までと何も変わらないので、 そこからおにぎりが変な動きを見せることはないのです。 逆に、クリックするたびに動きが変わるようにする方が実は難しいです。 今はMC内の配置によってあらかじめ決められたた動きしかできません。 おにぎりが急に逆周りになったりとかはできません。 それが逆周りになるかもしれなかったら、あるいはコースが変わるかもしれなかったら、 あらかじめMCで動き方を決めておくというこの方法は一切使えないことになります。 じゃあどうするのか。 それは第09回でやることになると思いますのでお楽しみに。 |
02_02.pflをご覧ください。 丸がぐるぐる回るSWFです。 これを「マウスが丸に乗っている間だけ回る」ようにしてみましょう。 まず、1段階目。 マウスが乗ったら再生、マウスが外れたら停止、を作りましょう。 ()の中に入れるべきものは、 「マウスが乗ったら」はrollOver、「マウスが外れたら」はrollOutです。 大文字小文字に気をつけてくださいね? 2段階目。 実は、これだけだと、思っていたのと違う動きをする点があります。 自分が今作ったSWFをいろいろ動かして、思ってたのと違うところを探してください。 2つあるのでよーく考えてくださいね。 3段階目。 では、その2箇所をがんばって修正しましょう。 必要ならこの枠の下にあるonイベントハンドラの一覧を参考にしてください。 また、ASを使わずに直せるなら使わずに直してもかまいません。 一応答えも書いておきます。 ですが、分かるまでは見ないようにしてください。 たとえ正解にたどり着かなくても、考えることはそれだけで糧になりますから。 では、以下2箇所の内容と対処法。 //*********************反転ここから*********************// 1つめのミスは、初期状態で回っちゃってること。 これの対処方法はいくつかありますが、 要するに最初にいきなり止めてしまえばいいわけですね。 1番メジャーな方法としては、第09回でやるonClipEventイベントハンドラという、 onイベントハンドラの親戚みたいなのを使って、 onClipEvent(load){stop();} と書くことでしょうが、これはまだやってないことなので、 今回はASを使わずに対処してみましょう。 丸がくるくる回るMCの最初にアクションの挿入で停止。 これで最初に止まってくれます。 でもこれで新たに生じる問題が2つ。 1つは最初に丸がなくなってしまいました。 ってことであらためて1フレーム目に固定画面で丸を置いておきましょう。 もう1つは毎回左に来るたびにとまってしまうこと。 そりゃ停止って書いてあるんだから、止まるにきまってますよね。 ってことで、最初の停止を2度と通過させないようにしなければなりません。 みなさんParaFla!いじりは慣れてるはずですから、簡単ですよね。 停止の下にラベルを置いて、まわりおわったところでそのラベルへジャンプ。 これでまわるところだけが再生され続けます。 1つめのミスの対処ここまで。 ここで追記。 掲示板にて、丸が動いてるMCの編集画面でプレビューしたら 1フレーム目の停止が反映されなかったが、それはなぜなのか、 という質問をいただきました。 掲示板にて回答をしておりますので、こちらをご覧ください。 2つめのミスは見つけるのが大変だったかもしれません。 丸の上でマウスの左ボタンを押して、押しっぱなしのまま丸の外へ。 いわゆるドラッグってやつですね。 ・・・まわり続けてますよね? 実はon(rollOut)は、マウスの左ボタンが押されていない状態でないと反応しません。 なので、on(dragOut)で左を押しながら外に出た場合もstop()させるようにしましょう。 さて、ここで問題になるのが書き方。 「え?改行ハイフン改行で3つめ書けばいいんじゃないの?」と思った方。 今回の内容をよく勉強してますね。正解です。 これでも正解なんですが、実は大正解とも言えるもっといい書き方があるんです。 「見ている人が〜〜したら」の部分が、 「見ている人が〜〜するか〜〜したら」みたいに複数の条件で同じASを実行してほしい場合は ()の中でその条件をカンマで区切って並べて書くことができるんです。 つまりon(rollOut,dragOut)で、 「マウスが普通に丸の外に出るか、左ボタンを押したまま丸の外に出るかしたら」 という条件をいっぺんに書くことができます。 今回は中に書くのがたった7文字なのでまるまる2回書いても大した手間じゃないですが、 中身が長かったらそれを2回書くのは大変です。 書くのはコピペでいいにしても、見にくく、重くなりますし どこかを修正しようと思ったときに2箇所探すのはめんどくさいですし、 とにかく、この書き方は覚えておいて損はないと思います。 まあ、知らなかったらできないことがあるわけでもないんですけどね。 ということで、この2つの修正をしたのが02_03.pflです。 この解答ソースを見る前に一度実際にやってみてほしいところですけどね。 ちなみに、ドラッグでマウスが乗った場合は、左ボタンを離した瞬間に on(rollOver)が反応するので、大した影響はないと考えてそのままにしてあります。 というか、それに対応するonイベントハンドラがないのでどうしようもないという話も。 もっと難しいAS使えばこれも対応できるんですけどね。 //*********************反転ここまで*********************// |
press | そのMCの上でマウスの左ボタンが押されたら。 |
release |
MCの上で押されたマウスの左ボタンが そのMCの上で離されたら。 |
rollOut |
そのMCの上からマウスが外れたら。 ただし、ドラッグで外れた場合は反応しない。 |
rollOver |
そのMCの上にマウスが乗ったら。 ただし、ドラッグで乗った場合は、 離された瞬間にMCの上にいたらその時に反応。 |
dragOut |
そのMCの上でクリックしたマウスが ドラッグでそのMCから外れたら。 |
dragOver |
そのMCの上でクリックしたマウスが 一度ドラッグでそのMCから外れた後で そのまま左ボタンが離されることなく もう一度そのMCに乗ったら。 |
releaseOutside |
そのMCの上でクリックしたマウスが ドラッグでそのMCから外れた後で 左ボタンが離されたら。 |
keyPress"" |
""の間にあるアルファベットの キーが押されたら。 アルファベット以外のキーの場合は ""の中にさらに<>を書き、 その内側にキー名を書く。 |