
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】ターゲットを用いた再生・逆再生記述の例
解説:横山 剛
(※本文中、及びキャプション内で使用している「<」、「>」は、全角になります。ご注意ください。)