on ClipEventの落とし穴 | デザインってオモシロイ -MdN Design Interactive-
【サイトリニューアル!】新サイトはこちらMdNについて


Webデザインには、あなたの知らない「落とし穴」がたくさん。大きなものから小さなものまで、それが及ぼす影響はさまざまだ。カンペキだと思っているあなたのサイトも、実はすでに暗い穴の中かも・・・。




on ClipEventの落とし穴



 ムービークリップ(以下、MC)で使うClipEventで再生・逆再生をさせるスクリプトがある【1】。これはスクリプトを貼ったシンボルをロールオーバー時に再生、ロールアウトで逆再生を行う。

 再生時にオブジェクトが飛び出すようなアニメをつくるとアニメーションによっては、一瞬マウスカーソルの下にオブジェクトがない状態が出てしまうときがある。そのときそのフレーム部分で逆再生を開始してしまい、またオブジェクトがカーソルの下にくるので、再生をするというふうに、そのフレーム部分で再生・逆再生を繰り返してしまう。

 この対策としてはスクリプトをターゲットパスで実行させるやり方がある。再生・逆再生をするMCにインスタンス名(例:target)を入れる。反応させたい範囲の透明MCをつくり、記述例【2】のスクリプトを貼り付ける。記述の中の「this」をターゲットのインスタンス名に変える。

 しかし、書き換える際に少し問題がある。通常、同じ階層にあるから、「this」を「target」に変えるだけだと思うかもしれないが、ClipEventは透明MCの中にあるものと判断されるので、ここでは「_parent.target」にしなくてはならない。


onClipEvent (load) {
this.stop();
}
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
if (this._currentframe
【1】再生・逆再生の記述例

onClipEvent (load) {
_parent.target.stop();
}
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
if (_parent.target._currentframe<_parent.target._totalframes) {
_parent.target.nextFrame();
// 次にフレームに進む
}
} else {
if (_parent.target._currentframe>0) {
_parent.target.prevFrame();
// 手前のフレームに戻る
}
}
}

【2】ターゲットを用いた再生・逆再生記述の例

解説:横山 剛

(※本文中、及びキャプション内で使用している「<」、「>」は、全角になります。ご注意ください。)


twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在