onなんとか=function()ってなんぞ?
こんな表記を、いつの日からかタイムライン上に見るようになりました。
(インスタンス名.)onなんとか = function(){ //ここに処理を記述 }
FLASH MXからだったでしょうか?
当時は、ムービークリップに割り当てるスクリプトをタイムラインに書くという事そのものが「解りにくいわ!」と、完全に無視していたのですが、後にそのメリットに気がつき、完全に逆走で出遅れたために一生懸命覚えました・・・生意気言って済みませんでした(゜□゜; )
色々あります。ですから、基本的な「ムービークリップ(今後MCと書く事にします)」と「ボタン」の、更に使う頻度の高そうなものについての簡単な説明と注意点を書きまして、あとは皆々様で実験なりヘルプを読んで更なる解釈を深めていただこう、と、全体的に他力本願な記事ですのでご注意下さい(゜□゜; )
まず、全体に渡って言える事は、これはファンクションである、という事です。
ここで新たに生成したvar変数は、このファンクション、またはこのファンクション内で生成したファンクションでしか使う事は出来ません。詳しくはコチラをご覧下さい。
■ MCに関するonなんとか
インスタンス名.onLoad = function(){//スクリプト}
こいつはかなり注意です。MCに記述していたonClipEvent(load)とは、全くの別物です。
何が違うかと言いますと、ステージに配置されたMCに対してonLoad=function(){}を記述しても、MCが表示された瞬間にonLoadファンクションの中身を実行してくれる事はありません。
こいつが実行されるタイミングは
『attachMovieなどで、新規にMCを生成した時のみ、1度だけ実行される』
なのです。
しかも、実行させるには更なる処理が必要。正直僕はその理屈を覚えるより『使いにくい』という経験が勝ってしまって、殆ど使用していません。
その代わり「もう、これでいいじゃないか(゜□゜; )」的な代用方法としまして
MC名.変数 = 値;
というスクリプトをMCが出てくるタイムラインに書いてしまえばいいんじゃないか、という結論に至りました(笑。もっと言うと、ここだけonClipEvent(load)を使ったっていいですしね、うん。
インスタンス名.onData = function(){//スクリプト}
ご注意スクリプト2つ目。ってか、そもそもこいつは何やねん、と思われている方もいらっしゃるかもしれません。
これは、
『ターゲットとなるMCに対して、loadVariablesにて外部よりデータが読み込まれた事を確認したときのみ』
動作するスクリプトです。
データをロードしたんだからonLoadじゃないか、と昔の自分は間違えていたせいで、このonなんとかが大嫌いになったわけですが(゜□゜; )、正しく使えば非常に便利なので覚えて下さいね。
インスタンス名.onEnterFrame = function(){//スクリプト}
僕が今、最もお世話になっているスクリプトです。
読んで字の如く、毎フレーム(EnterFrame){}括弧内のスクリプトを実行します。
また、この処理をやめたい時は
インスタンス名.onEnterFrame = null;
でOKです。再び復帰させたい場合は再度onEnterFrameファンクションを生成しましょう。
面倒な方は、若干の処理速度を犠牲にして(笑)、onEnterFrameファンクション内にフラグを設け、そのフラグ値がtrueの時のみ中身を実行する、といったスイッチを設けてもいいと思います。
あまり多用すると処理落ちの原因になりますのでご注意。
インスタンス名.onMouseDown = function(){//スクリプト}
マウスボタンを押した時に実行されます。クリック、ではないですよ。『押した』時です。
どう違うかと言いますと、押したマウスボタンを『離した』時のためにもスクリプトが用意されているからです。
このファンクションが設定されると、MC上だろうが外だろうが、SWFの表示範囲でマウスボタンが押されたならば、全て実行の対象となります。範囲に制限を加える時は、onMouseDownファンクションの内部でhitTestなどを使うと良いと思います。
インスタンス名.onMouseUp = function(){//スクリプト}
出ました。マウスボタンを『離した』時に実行されるスクリプトです。
殆どonMouseDownとセットで使われる事でしょう。ドラッグ処理を自分で作ったり、ゲームでよくある『ため技』なんかの発動条件に使えたりもします。
インスタンス名.onMouseMove = function(){//スクリプト}
マウスカーソルが動いた時に実行されます。
処理の軽減を重視するならば、マウスポインタに付いてくるMCの処理なんかは、onEnterFrameよりこっちでやってしまいましょう。
*
■ボタンに関するonなんとか
インスタンス名. onPress = function(){//スクリプト}
ボタン範囲内で、マウスボタンを『押した』時に実行されます。
MCのonMouseDownと違う所は、ボタンとして生成されたヒット領域のみに適用される、という事でしょうか。よくMCとボタンを混同させてしまいがちですが、互いの出来る事、出来ない事というのは、一度確認しておいて損は無いと思います。
インスタンス名. onRelease = function(){//スクリプト}
ボタン範囲内で、マウスボタンを『離した』時に実行されます。
特別な理由が無い限り、「クリック」を判定するスクリプトはこれになるでしょう。
インスタンス名. onReleaseOutside = function(){//スクリプト}ボタン範囲外で、マウスボタンを『離した』時に実行されます。
『オブジェクトをドラッグして、ボタンを離した時にこの範囲に入っていなかったら定位置に戻る』
みたいな処理の時に使うと便利なスクリプトですね。
インスタンス名. onRollOver = function(){//スクリプト}
マウスボタンを『押していない』時に、ボタンにマウスカーソルが『乗った』時に実行されます。
特筆すべき事はあまりありませんが、強いて言うならば、とにかくカーソルが上を通ったら実行させたいんだ!という時は、DragOverと併用した方が誤作動が減る場合があります。
インスタンス名. onRollOut = function(){//スクリプト}
マウスボタンを『押していない』時に、ボタンからマウスカーソルが『離れた』時に実行されます。
ボタンの上でマウスボタンを押し、そのままボタンの外にまでドラッグするような形で移動してマウスボタンを離すと、このスクリプトは実行されません。
使い所が肝要ですが、これもonDragOutと併用する事で、エラーを軽減出来る時があります。
インスタンス名. onDragOver = function(){//スクリプト}
マウスボタンを『押している』時に、ボタンにマウスカーソルが『乗った』時に実行されます。
もちろん、マウスボタンを押さずにボタンにカーソルを合わせても実行されません。
『ドラッグしている時だけ反応するボタン』といった特殊なケースに用います。
インスタンス名. onDragOut = function(){//スクリプト}
マウスボタンを『押していない』時に、ボタンからマウスカーソルが『離れた』時に実行されます。
これも、マウスボタンを押していない状態であれば動き出す事はありません。
*
あれ、なんか返って解りづらくなってるんじゃないだろうか・・・。
詰まる所、onLoadとonDataだけは使い方に注意してくださいね、という事でした。
だったら最初からそれだけ言えばいいのにねーはははー(゜□゜; )おしまい(汗
カテゴリ
なんぞ?トラックバック(0)
このブログ記事を参照しているブログ一覧: onなんとか=function()ってなんぞ?
このブログ記事に対するトラックバックURL: http://graphicker.jp/flextime/blog/cgi-bin/mt-tb.cgi/91
コメントする