プロが教える店舗&オフィスのセキュリティ対策術

いまだにFLASH MXを使っています。
やりたいことはムービークリップを作成し、マウスがそれに触ると停止し、離れると動く、といった感じにしたいのですが、どうにも上手くいきません。
他にボタンを作成しそこにアクションを設定すれば上手く動くのですが
ボタンではなく自分自身で操作できないかと思っています。

ボタンのシンボルをムービークリップ(movie)化
それをステージに配置しアクションを設定
アクションイメージ
on (rollOver) {
movie.stop();
}
on (rollOut) {
movie.start();
}

A 回答 (2件)

> ボタンではなく自分自身で操作できないかと思っています。



Flash5 までは無理ですが,FlashMXからは普通にできると思いますよ。
普通通り,FlashPlayer6 以上の SWF をパブリッシュするのでしたら。


> ボタンのシンボルをムービークリップ(movie)化

意味が少しわかりませんが,
ボタンシンボルをムービークリップ化するとかそういう面倒なことをするのではなく,
普通にムービークリップを作成して,
そのムービークリップに on (rollOver) {} などを書けば良いと思います。

> on (rollOver) {
>   movie.stop();
> }
> on (rollOut) {
>   movie.start();
> }

???
上のスクリプトに注釈行を入れてみますよ。

// このムービークリップにロールオーバーしたとき
on (rollOver) {
  // このムービークリップの中にある
  // movie というインスタンス名のムービークリップを停止
  movie.stop();
}
// このムービークリップからロールアウトしたとき
on (rollOut) {
  // このムービークリップの中にある
  // movie というインスタンス名のムービークリップを???
  movie.start();
}

かなり無茶苦茶のように思います。
とにかく 「普通に作成」 しましょう。

ロールオーバーしたりロールアウトしたムービークリップ自体を,
再生や停止させたいのでしょう?
なぜ,「movie というインスタンス名のムービークリップ」が出没するのかわかりません。
また,start() は音に使うスクリプトで,タイムライン操作のスクリプトではありません。

普通にこれで良いのではないでしょうか↓。

on (rollOver) {
stop();
}
on (rollOut) {
play();
}

この回答への補足

回答を応用したら無事出来ました。
ありがとうございました。

補足日時:2008/10/19 16:33
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
昔ちょっとやってたくらいで、まったくの素人なので基本を全て忘れていました。
やりたいことの説明もまずかったみたいですね。

やりたいことは沢山のボタンを並べたものをスクロールさせて流れた来たボタンに触れると停止し、触ると対象のリンク先に遷移するといったことがしたいのです。

その為まずはボタンを大量作成し、その後それをまとめてグラフィックのシンボルにしてトゥイーンを作成します。
それをムービークリップ化してステージに配置しています。

その為教えていただいた方法で設定すると、ムービーの制御は出来るのですがリンクボタンが機能しなくなりました。

どうすればよいのでしょうか

お礼日時:2008/10/19 11:51

#1です。



> ムービーの制御は出来るのですがリンクボタンが機能しなくなりました。

on(○○){ } を書いたものが上下に重なったり,
内外で重なると,片方の on(○○){ } しか有効にならないためです。

上下関係(レイヤーの上下関係)では,上の方が勝ちます。
普通そうですね。
Flash に限らず上下に重なったボタンでは上のボタンが優先です。

内外(ムービークリップの中のものと外の物)が重なった場合は外の方が勝ちます。


せっかく優劣関係があって,
誤動作しないようにしてある仕様を崩すのは少々やっかいです。
しかしできないことはありません。
これには片方の on(○○){} の使用をやめて,hitTest を使うのが一般的です。

当たり判定について
http://hakuhin.hp.infoseek.co.jp/main/as/hittest …


上のURLに書いてあることを使えばできます。
ボタンをたくさん入れたムービークリップ自体に書くスクリプトは次のようになります。

--------------------------------------
// このムービークリップが表示されたとき
onClipEvent (load) {
// ロールオーバーのフラグ over_flag を初期化
over_flag = false;
}

// 1フレーム進む時間毎に随時実行
onClipEvent (enterFrame) {
// もしこのムービークリップがマウスとヒットしていて
if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
// over_flag が false のとき
if (!over_flag) {
// このムービークリップの再生を停止
stop();
// ロールオーバーのフラグ over_flag を true にする
over_flag = true;
}
// もしこのムービークリップがマウスとヒットしていないときで
} else {
// over_flag が true のとき
if (over_flag) {
// このムービークリップを再生
play();
// ロールオーバーのフラグ over_flag を false にする
over_flag = false;
}
}
}
--------------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!