- 締切済み
FlashCS4でスワップイメージがしたいのですが。
初心者です。FlashCS4でスワップイメージ(名称が違う?)がしたいのですが。マウスを乗せると別画面で上に写真がでるみたいな感じです。。表現が下手ですいません。。どなたかお教えください。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
ActionScriptコードを考える前(質問する前)に, 「何をするのか,具体的な動作(方法)を決める。」 ということが必要ですよ。 > マウスを乗せると別画面で上に写真がでるみたいな感じ それはイメージであって「具体的動作(方法)」ではありませんね。 「マウスを乗せると別画面で上に写真がでる」 方法など無数にあります。 ・外部にあるJPEG画像を指定場所にロード表示させる ・シンボル内にある画像をステージ上に呼びだす ・ActionScriptで絵を描画させる ・表示オブジェクトの表示/非表示プロパティを切り替える ・表示オブジェクトの座標を変える などなど…。 さらにそのバリエーションや組み合わせも考えられます。 1つのことをするのにも無数の方法が考えられて, 色々できるのがFlashの魅力であり,作り手に人気がある理由の大部分です。 そして,その方法と具体的動作が決まった上で, ActionScriptをどうするべきかを考えるのです。 そうでないと,「ActionScript」 の 「A」 の字すらも考えられません。 === === === 初心者でいらしゃるということですから, 方法例と具体的動作も提示します。 とりあえず 「ムービークリップ内のフレームを移動させる方法」 を使うのが良いのではないかと思います。 これはFlashの基本中の基本ですし, まず最初にやってみて身に付けるべき方法だと思います。 Flash CS4 のステージ上に 「最初に表示される画像」 を描くか読み込むかして用意します。 その 「最初に表示される画像」 を選択した状態で, 「修正」→「シンボルに変換」より,「ムービークリップ」に変換します。 (この状態でシンボルには「シンボル1」などのようなシンボル名が自動で付きます) そのステージ上のムービークリップをダブルクリックするなどして, ムービークリップ内タイムラインの編集画面へと移動します。 ムービークリップ内タイムラインは 1レイヤー1フレームのみで, そこに 「最初に表示される画像」 のみがあるはずだと思いますから, 1レイヤー4フレームにして, 各フレームにそれぞれのマウス状態の絵を描くか置くかします。 この様子が下↓の「図1」です。 「フレーム1の画像」,「フレーム2の画像」「フレーム3の画像」「フレーム4の画像」 と横並びになっていますが,実際には横並びにはしません。 図示の都合上,横並びにしているだけです。 本来は各フレームの同じ座標にそれぞれの画像を配置します。 以上でムービークリップ内の編集は終わりですから, 何もないところをダブルクリックするとか, 「編集」→「ドキュメントの編集」などで,シーン1 などメイン(root)のタイムラインの編集に戻ります。 メイン(root)のタイムラインの編集に戻ると, 上で作成したムービークリップのフレーム1だけが見える状態であると思います。 そのムービークリップを選択した状態で, ステージ右のプロパティパネルでインスタンス名を付けます。 例えば 「my_pic」 というインスタンス名を付けます。 (図示をしたかったのですがスペースがないので省略) その 「my_pic」 の横辺りにでもボタンを作成し, そのボタンには, 例えば 「my_btn」 というインスタンス名を付けます。 そして,レイヤーを1つ追加して, そのレイヤーをActionScript専用レイヤーと勝手に決めます。 この様子が下↓の「図2」です。 そしてやっと ActionScript です。 上記のような仕組みを作った上で, ActionScript用レイヤーと勝手に決めたレイヤーの,フレーム1の空白キーフレームを選択して, そこに次のようなActionScriptを書けば(コピペ可)一応でき上がりです。 ----------------------------------------- // ムービークリップ「my_pic」の再生を停止 my_pic.stop(); // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスオーバー,実行関数:picGoto2) my_btn.addEventListener(MouseEvent.MOUSE_OVER,picGoto2); // 関数 picGoto2 を定義 引数(evt:イベント) 戻り値:なし function picGoto2(evt:Event):void{ // 「my_pic」内フレームをフレーム2に進めて停止 my_pic.gotoAndStop(2); }; // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスアウト,実行関数:picGoto1) my_btn.addEventListener(MouseEvent.MOUSE_OUT,picGoto1); // 関数 picGoto1 を定義 引数(evt:イベント) 戻り値:なし function picGoto1(evt:Event):void{ // 「my_pic」内フレームをフレーム1に進めて停止 my_pic.gotoAndStop(1); }; // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスダウン,実行関数:picGoto3) my_btn.addEventListener(MouseEvent.MOUSE_DOWN,picGoto3); // 関数 picGoto3 を定義 引数(evt:イベント) 戻り値:なし function picGoto3(evt:Event):void{ // 「my_pic」内フレームをフレーム3に進めて停止 my_pic.gotoAndStop(3); }; // 「my_btn」にイベントリスナーを登録 // 引数(イベント:クリック,実行関数:picGoto4) my_btn.addEventListener(MouseEvent.CLICK,picGoto4); // 関数 picGoto4 を定義 引数(evt:イベント) 戻り値:なし function picGoto4(evt:Event):void{ // 「my_pic」内フレームをフレーム4に進めて停止 my_pic.gotoAndStop(4); }; ----------------------------------------- あとはパブリッシュなどをして動作検証をしながら,表示位置などの調節をします。 もしムービークリップ内のフレーム1の画像が不要な場合は とりあえずダミー絵でも描いておいて,後から消せば良いだけです。 なお,スクリプトは次のように短くすることもできます。 ----------------------------------------- // ムービークリップ「my_pic」の再生を停止 my_pic.stop(); // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスオーバー,実行メソッド:my_pic.gotoAndStop(2)) my_btn.addEventListener(MouseEvent.MOUSE_OVER,function():void{my_pic.gotoAndStop(2)}); // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスアウト,実行メソッド:my_pic.gotoAndStop(1)) my_btn.addEventListener(MouseEvent.MOUSE_OUT,function():void{my_pic.gotoAndStop(1)}); // 「my_btn」にイベントリスナーを登録 // 引数(イベント:マウスダウン,実行メソッド:my_pic.gotoAndStop(3)) my_btn.addEventListener(MouseEvent.MOUSE_DOWN,function():void{my_pic.gotoAndStop(3)}); // 「my_btn」にイベントリスナーを登録 // 引数(イベント:クリック,実行メソッド:my_pic.gotoAndStop(4)) my_btn.addEventListener(MouseEvent.CLICK,function():void{my_pic.gotoAndStop(4)}); ----------------------------------------- どちらでも良いと言えば良いのですが, 後の使い方や融通性(functionの使い回しやイベントリスナーの削除など)から考えて, 上に書いた方の書き方の方が良いとは思います。 === === === 細かい点は抜きにして, 大雑把には ActionScript とはどういったものかがおわかりになりますでしょうか。 ActionScriptとは, 人間の勝手な想像や妄想やイメージ通りにものを動かす魔法の言葉や呪文ではないのです。 ActionScriptとは, まずFlashをどう動かすかを具体的に考えて, その具体的動作をするように人間が仕みを作ったあとで, その仕込みを手順通りに動作させるための 単純な命令文 です。
<a href="index1.html" onmouseover="MM_swapImage('Image1','','image2.jpg',1)" onmouseout="MM_swapImgRestore()"><img src="img003.gif" width="120" height="60" id="Image1" /></a> 初期には『img003』が表示され、マウスを置くと『mage2』が表示されクリックすると『index1』に飛ぶ(これは別画面)
お礼
早々にご回答ありがとうございました。 htmlでは表示できましたが、Flash CS4でのActionScript3.0の場合はいかがでしょうか?色々と調べてみたのですがわかりませんでした。 申し訳ございませんが、よろしくお願いいたします。
マウスロールオーバ、(マウスを乗せると変化する) マウスオーバクリック(マウスをクリックすると変化) マウスロールアウト(マウスが離れると変化する) と言います。 スワップイメージと言うのは上記のコードで初期の画像から変化させる事。
お礼
わかりやすいご回答をありがとうございます。 そうです。そのスワップイメージがしたいのですが。 どうぞお教えください。 よろしくお願いします。
お礼
大変ご丁寧な回答をありがとうございます。 さっそくこの通りに行ってみます。 具体的かつ適確なご回答に感謝感謝です。 本当にありがとうございました。