簡単と言えば簡単ですよ。
少し凝ったサイトの Flash であれば,
ボタンシンボルのインスタンスをボタンとして使用せずに,
ムービークリップインスタンスをボタンとして自作し,使用しているのをかなり見かけます。
ムービークリップ内のタイムラインを次のようにします。
レイヤー 筆・・・|●|●>---->|●|●>---->|●|
ふつう↑ ↑大きくなる ↑小さくなる
「大きくなる」,「小さくなる」というのは,
グラフィックシンボルやムービークリップシンボルのインスタンスを,
ムービークリップ内でモーショントゥイーンで大きくしたり小さくしたりするのです。
作り方の順序からすると,
「大きくなる」,「小さくなる」という前の「ふつう」の状態の画像やシェイプをグラフィックシンボル もしくは ムービークリップシンボル に変換して,
さらにその グラフィックシンボル もしくは ムービークリップシンボル のインスタンスをムービークリップに変換して,
ムービークリップ内でモーショントゥイーンさせるという順序の方が良いかもしれません。
とにかく,
上のようなムービークリップを作成します。
レイヤーを1つ追加して,そのレイヤーをスクリプトを記入する専用レイヤーと勝手に決めます。
そしてそのレイヤーの空白キーフレーム1(「ふつう」がある)のフレームに,
-------------------
stop();
-------------------
を書いて,フレーム1 で止めるようにしておきます。
「大きくなる」のおおきくなりきったフレームを仮に 10 とすると,
スクリプトを記入する専用レイヤーと勝手に決めたレイヤーのフレーム10を空白キーフレームにして,
そのフレーム10にも,
-------------------
stop();
-------------------
を書いて,フレーム10 で止めるようにしておきます。
stop(); stop();
レイヤー 筆・・・|○ []|○ []|
レイヤー 筆・・・|●|●>---->|●|●>---->|●|
ふつう↑ ↑大きくなる ↑小さくなる
そして,
メインムービー(ドキュメント)の編集にもどって,
上で作ったムービークリップ自体に次のように書きます。
---------------------------------------------
// このムービークリップにロールオーバーしたとき
on(rollOver){
// このムービークリップをフレーム2 に進めて再生
this.gotoAndPlay(2);
}
// このムービークリップからロールアウトしたとき
on(rollOut, dragOut){
// このムービークリップを フレーム11 に進めて再生
this.gotoAndPlay(11);
}
// このムービークリップをクリックしたとき
on(release){
// ★ここにしたい動作を書く★
}
---------------------------------------------
これで自作ボタンの完成になります。
// ★ここにしたい動作を書く★
に関してですが,
ボタンシンボルのインスタンスは階層を持ちませんが,
ムービークリップインスタンスは階層を持ちます。
階層が違うことに注意してください。
もし仮にボタンシンボルのインスタンスに次のように書いていたとします。
on(release){
gotoAndStop(3);
}
これは,
ボタンの存在するタイムラインに対して 「フレーム3 に進めろ」という命令になりますが,
ムービークリップの場合,「ムービークリップ内を フレーム3 に進めろ」 という命令になります。
階層が一段階変わりますので,
上のスクリプトをボタンの場合と同じように動作させるには,
on (release) {
this._parent.gotoAndStop(3);
}
というように「_parent(親)」階層に対して命令しなければなりません。
もしくは,上のような相対パスではなく絶対パスで,
on (release) {
_root.gotoAndStop(3);
}
にしてもかまいません。
ボタンは階層を持たないけど,ムービークリップは階層を持つということに気を付ければ,
ムービークリップをボタンにした方が自由に色々なことができるようになります。
お礼
ありがとうございます! 早速試してみます。