教えて!gooにおける不適切な投稿への対応について

すみません、大変困っています。
いま、action script2.0で
Aというボタンをロールオーバーした際に、他のmcの画像がさしかわるスクリプトがわかりませんで困っています。
ソフトは、flash CS3で、scriptは2.0です

細かく説明しますと
A:ボタン B:鳥の画像  C:シマウマの画像
1.ボタンAをマウスオーバー
2.鳥がシマウマに変わる
3.ボタンAをロールアウトすると元のBに戻る

大変恐縮ですが、わかるかたがいらっしゃれば教えてください。
よろしくお願いいたします。

gooドクター

A 回答 (2件)

ご質問は ActionScript2.0 ですよね。




方法は無数にあります。

・attachMovie で呼びだすシンボルを切り替える
・loadMovie でロードする外部画像を切り替える
・ムービークリップの _visible (表示) を切り替える
・ムービークリップの _alpha (不透明度) を切り替える
・ムービークリップの _x や _y (座標) を切り替える
・swapDepths でムービークリップの深度を切り替える
・gotoAndStop でムービークリップ内のフレームを切り替える
 ~などなど~
 そして各パターンのバリエーションや組み合わせもあります

とりあえず,
オーソドックスで,
これくらいはすぐに思い付かなければならない gotoAndStop の方法を取るのが良いのではないでしょうか。
(gotoAndStop くらいは使えなければ Flash を全く使えないに等しいことだと思います。)



◎gotoAndStop でムービークリップ内のフレームを切り替える方法

ステージ上に 「鳥の画像」 を描くか,もしくは読み込んで配置します。

そのステージ上の 「鳥の画像」 を選択し,
「修正」→「シンボルに変換」などでムービークリップに変換します。

その 「鳥の画像」 入りムービークリップをダブルクリックするなどして
ムービークリップ内のタイムラインの編集に入ります。

ムービークリップ内にはレイヤーが1つでフレーム1に 「鳥の画像」 があるだけだと思います。
そのレイヤーのフレーム2を選択して,
右クリック→「空白キーフレームの挿入」などで,フレーム2を空白キーフレームにします。

その何もないフレーム2のステージ上に,
「シマウマの画像」 を描くか,もしくは読み込んで配置します。

つまり,簡単に書くと,
 ムービークリップ内のフレーム1には「鳥の画像」を用意し,
 ムービークリップ内のフレーム2には 「シマウマの画像」を用意する。
というだけのことです。

ムービークリップ内タイムラインの編集は以上で終わりですから,
ステージ上の何もない部分をダブルクリックするなどしてメインのタイムラインの編集に戻ります。

メインのタイムラインの編集に戻ると「鳥の画像」だけが表示されたムービークリップがあると思います。
このムービークリップを選択して,
下のプロパティインスペクタでインスタンス名を付けます。
たとえば,画像が入っているので,
「Gazou_mc」
というインスタンス名を付けます。

その「Gazou_mc」とは違う場所にボタンを用意します。
そしてボタンにもインスタンス名を付けます。
たとえば,画像を変えるので,
「Change_btn」
というインスタンス名を付けます。

以上で,
ステージ上に「見える物(DisplayObject)」の準備は終わりです。

ActionScript用にレイヤーを1つ追加して,
そのレイヤーのキーフレームに次のように書きます。

---------------------------------------
// 「Gazou_mc」 の再生を停止
Gazou_mc.stop();

// 「Change_btn」ロールオーバー時の動作を定義
Change_btn.onRollOver = function():Void {
// 「Gazou_mc」内を フレーム2 に進めて停止
Gazou_mc.gotoAndStop(2);
};
---------------------------------------

これで,
 ボタン「Change_btn」にロールオーバーしたとき,
 ムービークリップ 「Gazou_mc」 の画像が
 「鳥の画像」 から「シマウマの画像」に変わる。
というものができます。

もし,
ロールアウトしたときやドラッグアウトしたときに元の 「鳥の画像」 に戻したいのでしたら,
上のスクリプトを次のようにすればできます。

---------------------------------------
// 「Gazou_mc」 の再生を停止
Gazou_mc.stop();

// 「Change_btn」ロールオーバー時の動作を定義
Change_btn.onRollOver = function():Void {
// 「Gazou_mc」内を フレーム2 に進めて停止
Gazou_mc.gotoAndStop(2);
};

// 「Change_btn」ロールアウト&ドラッグアウト時の動作を定義
Change_btn.onRollOut =
Change_btn.onDragOut =
function():Void {
// 「Gazou_mc」内を フレーム1 に戻して停止
Gazou_mc.gotoAndStop(1);
};
---------------------------------------



 何かに困ったら,
 とりあえず gotoAndPlay や gotoAndStop で考えてみる。

今も昔もそれが良いように思います。
play(), stop();,gotoAndPlay();,gotoAndStop() は,
結構オールマイティで様々なことに使えます。


「ムービークリップはActionScriptで作成する」など何らかの理由で,
ムービークリップ内のフレームを複数にしたくないまたはできないという場合は(AS3のスプライト的なもの),
ムービークリップ内に attachMovie で呼びだすシンボルを切り替えても良いかもしれません。
 
    • good
    • 0

特に外部から、画像を読み込む趣旨でないのならば



ステージ上に2枚画像を配置し、visibleプロパティで表示/非表示する方法は如何でしょうか?

具体的には同じサイズの画像[鳥][シマウマ]を用意し鳥の画像を下に、シマウマの画像を上に重ねます。

以下スクリプト

simauma.visible = false;

ボタンのインスタンス名.addEventListener(MouseEvent.MOUSE_OVER , btnOver);
ボタンのインスタンス名.addEventListener(MouseEvent.MOUSE_OUT , btnOut);

function btnOver(e :MouseEvent) :void
{
 simauma.visible = true;
}

function btnOut(e :MouseEvent) :void
{
 simauma.visible = false;
}

※ simauma = [シマウマの画像]
    • good
    • 0

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

gooドクター

人気Q&Aランキング