Flash ActionScript初心者です。
http://www.asebino.com/
上記URLのトップページで見るFlashと同じ様なものを作りたいのですが、どうしたら良いのでしょう?
ボタン上にカーソルが来るとボタンがロールオーバーし別座標の画像がマスク処理され表示されます、その際、前の画像がデフォルトに戻らず、残ったままその画像の上に重なるように表示するにはどうしたら良いでしょう。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
#1です。
なるほど。言われてみれば,そうですね。
一番上のボタンを複数回ロールオーバーしても,何も変化が起きませんね。
#1で勝手に作った階層(mainMC.subMc1)で書いた場合は以下の様にするとできると思います。
mainMC.subMC1を動かすボタンには
--------------------------------------------
on (rollOver) {
if (movie != "1") {
shindo += 1;
_root.mainMC.subMC1.swapDepths(shindo);
_root.mainMC.subMC1.gotoAndPlay(2);
}
movie = "1";
}
--------------------------------------------
mainMC.subMC2動かすボタンには
--------------------------------------------
on (rollOver) {
if (movie != "2") {
shindo += 1;
_root.mainMC.subMC2.swapDepths(shindo);
_root.mainMC.subMC2.gotoAndPlay(2);
}
movie = "2";
}
--------------------------------------------
わかりますか?
条件で分岐させているのです。上のsubMC1を動かすスクリプトに注釈を入れるなら,
--------------------------------------------
//ロールオーバーで
on (rollOver) {
//もし「movie」という変数に"1"が入ってない場合
if (movie != "1") {
//変数「shindo」に1を加える。
shindo += 1;
//mainMC.subMC1にはその深度を設定して,
_root.mainMC.subMC1.swapDepths(shindo);
//mainMC.subMC1を2フレーム目からPlay。
_root.mainMC.subMC1.gotoAndPlay(2);
}
//無条件に「movie」という変数に"1"という値を与える。
movie = "1";
}
----------------------------------------
という感じです。
movie = "1";
でないかぎり,スクリプトは実行されますが,いったん,movie に "1" が入ると何も実行されません。
これで,mainMC.subMC1 は同じボタンの命令を聞かなくなります。ただ,最終フレームに向かって進むだけ。
mainMC.subMC1 の最終フレームには stop(); を書いて止めてくださいね。ループするので。
こういう勝手に決めた変数と値で,その後の成り行きを変化させることは,Flashに限らずよく使うことです。
ご存じかもしれませんが,一般的には「フラグ(旗)を立てる」と言います。
一般的には,
movie = "1";
ではなく,
flag = "1";
とか
flg = "1";
とか言うように書く場合が多いです。
例えばフラグはExcelの関数やVBAなどではしょっちゅう使います。
それと,
なんで5行目が,gotoAndPlay(2);なのかと言うと,
subMC1,2,…?までの最初のフレームには stop(); を書いて止めていると思うからです。
#1では,つたない説明でしたが,
深度の設定と,ムービーを動かすところまでは無事にできたのですね。
ちょっと感動しました。
この回答への補足
前回同様すばやいご回答ありがとうございます。
出来ました!!
大変勉強になりました。
あと少し分からない箇所があります。
ボタンのロールオーバーした状態を維持するために、別フレームに反転したボタンを配置して、そのフレームにgotoAndplayで移動させ対処したのですが、Actionscriptでも可能でしょうか?
それと、ムービークリップ内にムービークリップとして作成したマスクが適応されなかったのですが、これもActionscriptで制御するのでしょうか?
ちょこちょこと質問してしまってすいません。
どうぞ宜しくお願い致します。
No.5
- 回答日時:
>> 入子の階層?
>>(MC(ムービークリップ)の中にMCという形で)が
>> 増えていくと下の階層に当たるマスクの
>> ムービークリップは使えないのでしょうか?
パスさえ間違えなければできますがね。
普通は,単に動き回るのは,「グラフィックオブジェクト」。
さらに中で動き回るか,オブジェクト自体にActionScriptを書く場合は,「ムービークリップオブジェクト」にしますが,
グラフィックにしてもムービークリップにしても,
入れ子状態でも大丈夫です。
うーん,わかりかねます…
分かりにくい質問でした。反省。
階層がある程度多く重なっていても大丈夫そうですね。
少し自分でも調べてみます。
でも、大分やりたいことは出来ました。回答者様のおかげです。
また自分である程度Flash Actionscriptを理解したところで質問したいと思います。
毎回の質問に対しご丁寧かつ迅速に対応していただきありがとうございました。
No.4
- 回答日時:
#3の訂正です。
すみません。
>> 参考URLの#1さんの回答が参考になるかもしれません。
↓訂正
参考URLの#2さんの回答が参考になるかもしれません。
です。#1は私でした。#1は参考になりません。
この回答への補足
少しずつの質問にお答えしていただきありがとうございます。
マスクは_root.mainMC.subMC1の中にmaskMCとして置いてありますが、これではマスクは見れないのですか?
subMC内に作ったマスクは簡単に画像と同サイズのシェイプを上下左右に動かしているのですが、複雑なマスクを掛けたムービーをsubMCの中の一つとして作成したいです。
入子の階層?(MC(ムービークリップ)の中にMCという形で)が増えていくと下の階層に当たるマスクのムービークリップは使えないのでしょうか?
質問が分かりづらいと思いますが、何卒宜しくお願い致します。
No.3
- 回答日時:
#1です。
>> ボタンのロールオーバーした状態を維持するために、
>> 別フレームに反転したボタンを配置して、
>> そのフレームにgotoAndplayで移動させ対処したのですが、
>> Actionscriptでも可能でしょうか?
どういう,状態か,勝手に想像した範囲でしか言えませんが…
その方法でも良いですね。すると,ボタンの上にボタンが重なるので,元のボタンは効かなくなりますね。
フラグを立てる必要もなくなります。
でも,ActionScriptでも可能かという質問がよく理解できません。
他にも方法はたくさんあると思います。
少なくとも,そのメインムービーに複数フレームを作って,そこにgotoするというのはあまり使わないような気がします。
例えば
「ボタン1」の上のレイヤーに,「反転した?ムービークリップ1」を作っておいて,1フレーム目を空にしてstopさせておく。
その「ボタン1」にロールオーバーしたとき,「反転した?ムービークリップ」をplayさせる。
「ボタン2」にロールオーバーしたときは,,「反転した?ムービークリップ1」をgotoAndStop(1); で止めて置いて,「反転した?ムービークリップ2」ををplayさせる。
こんな感じが普通でしょうかね。
これだと,Actionscriptも使いやすくなります。
1フレーム目を空にして見せないのではなく,
_root.hantenMC1._visible = true; //(表示)
とか
_root.hantenMC1._visible = false; //(非表示)
で切り替えることもできますし,
_root.hantenMC1._alpha = 100; //(不透明)
とか
_root.hantenMC1._alpha = 0; //(透明)
で,アルファをかけることができます。
基本的に,ActionScriptを使って,他の物の状態を変える場合は同じフレームにオブジェクトが共存していないとできないので(共存していなくてもできますが,少し大変),同フレームにムービークリップを用意しておくのが一般的だと思います。
別に,今されている他のフレームに行く方法でもさしつかえないですよ。
>> それと、ムービークリップ内に
>> ムービークリップとして作成したマスクが
>> 適応されなかったのですが、
>> これもActionscriptで制御するのでしょうか?
マスクは適応されているのですが,
ムービークリップの深度を変えることによって,そのマスクよりもムービークリップが上の深度になってしまうためにマスクがマスクではなくなってしまうのです。
最初の例で言うと,_root.mainMC にマスクを置かれてるのではないでしょうか。
マスクは,_root.mainMC.subMC1 内に作ると,深度が共に変化するのでマスクはかかると思います。
または,setMaskを使うことでしょうか?
参考URLの#1さんの回答が参考になるかもしれません。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1462393
No.1
- 回答日時:
根本原理は,ムービークリップの深度を変えています。
参考URL↓の2つ目の画像。
クリックするとムービークリップの上下が変わります。
質問者さまが示されているURLの場合は,
各メニューボタンの選択で深度を変えると同時に,そのムービークリップを動かしているのです。
メニューボタンは常に上に表示されていますから,
切り替わるムービークリップより上のレイヤーに配置。
切り替わるそれぞれのムービークリップを全て入れるムービークリップを
メニューボタンより下のレイヤーに作ってその中に,各切り替わるムービーを入れる。
□レイヤー2 ・・・|●| ←メニューボタン用レイヤー
□レイヤー1 ・・・|●| ←切り替わるオブジェクト用レイヤー
※↓参照
※
┌mainMC─┐
│ subMC1 │
│ subMC2 │
│ subMC3 │
│ … … │
└────┘
こんな感じで↑。
メインアニメーションの1フレームのフレームスクリプトとして,例えば,
shindo = 0;
という変数とその変数に0を入れておいて,
「subMC1」を上に表示させて,なおかつ動かすメニューボタンには
----------------------------------
on (release) {
shindo += 1;
_root.mainMC.subMC1.swapDepths(shindo);
_root.mainMC.subMC1.gotoAndPlay(1);
}
----------------------------------
みたいな感じのスクリプトを書いておけば,
メニューボタンクリックと同時に,「subMC1」が「mainMC」内で最上深度となって,なおかつ1フレームに戻って中のムービーが再生するスクリプトになります。
参考URL:http://hakuhin.hp.infoseek.co.jp/main/as/z.html
この回答への補足
すいません、また失礼します。
ロールオーバーして画像が変わるところまでできたのですが、同じボタンの上にカーソルを乗せると同様に画像の変更ムービーが流れます、その時、その前の前の画像が下の現れて違和感を感じます。
同じボタンにカーソルが乗ったときには画像が変わらないようにしたいのですが、どうしたらよいのでしょうか?
また、ボタン画像も別のボタンを触るまでロールオーバーした状態で維持させたいです。
ようは http://www.asebino.com/ このURLのHPと同等のものを作りたいと解釈して頂ければと思います。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- マルウェア・コンピュータウイルス FlashPlayerの削除とマルウェア感染について 5 2023/02/23 20:52
- その他(プログラミング・Web制作) ホームページビルダー16で画像を保存したら画像がトップページ上に沢山出てきてしまいます 1 2022/12/06 14:50
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Android(アンドロイド) このスマホの機種はなんですか? 3 2023/03/01 11:17
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- その他(ブラウザ) Mycrosoft Edge の「コレクション」に、画像とテキストを追加したい 2 2022/05/28 11:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面全体にマスク
-
長方形がランダムに消えるやつ
-
フレームでページ分かれていて...
-
Flashで右クリックメニューにつ...
-
C言語 バッファについて。
-
C#でDLLファイル読み込みを行う...
-
Flashファイルのループ再生方法
-
URLを隠す、または別アドレスな...
-
FLASH上でインラインフレームみ...
-
車の運転時のメガネ 縁なし(...
-
ハードディスク DVD 読み...
-
Directshowを使って動画を画像...
-
2Dゲーム作成する際、アニメー...
-
A.S 3.0 キーボードでのフレー...
-
三角形ABCのBを可変にしたい
-
FlashMX フェードアウト
-
ムービークリップの位置と角度...
-
フレーム内のオプションボタン...
-
メガネのフレームが半分に折れ...
-
VBで動的に作成したパネルの上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FLASH liteで選択したグラフィ...
-
スライドバーを使って画像を変える
-
ロールオーバーしたボタンは押...
-
Flash Lite 1.1で、複数のMCをA...
-
Flash8 チェックボックスのラベ...
-
Flashで一部レイヤーだけループ...
-
Flashでタイムライン表示割合を...
-
flashボタンオーバーで残像を残...
-
フラッシュで作る地図
-
時計がついたスライドショーが...
-
Flashロールオーバーボタンと画...
-
flash mxで処理を待機させてお...
-
Flashで右クリックメニューにつ...
-
フレーム内に移動したい
-
ソーラーパネルのアルミフレー...
-
HPを作りたい
-
【C#】wavファイルの複数同時再生
-
phpで音を鳴らす
-
ドロップフレームの計算をエク...
-
フレーム内のオプションボタン...
おすすめ情報