ボタンクリック一回ですべてのMC再生停止
はできるのでしょうか?
もう一回押したら再生を再開したいのです。
何故、このような事をしたいかと言いますと、
FLASH内のあるボタンを押すと
ポップアップウインドウが開いてそこで
MPEGを再生したいのですが
FLASH自体が非常にアニメーションが多く、とても重いので、
MPEGがカクカクしてしまうのです。
そこでポップアップを開くときのボタンを押すのと同時に
FLASH内すべてのアニメーションを停止したいのです。
他の方法でも構いませんので
解決方法がありましたら是非おしえてください。
No.1ベストアンサー
- 回答日時:
ご質問に書かれている,その MC内 の動きというのは
ActionScriptによるアニメーションではなく,
タイムラインを使ったアニメーションで,stop(); で止まるという前提で回答します。
ActionScript で動かした動きなんて stop(); では止められませんから,
動かした方の責任で止めてください(笑)。
『stopAllSound』(全ての音を止める) という関数があるくらいだから,
『stopAllMC』 なんて物はないものか?
と思ってGoogleで 「stopAllMC」 と検索したら,日本語ページで1件だけヒットしました。
しかし,そのページはすでに消えている?ので,そのキャッシュからの引用です。
--- 引用 -----------------------------
//■sample for "for..in" loop
function stopAllMc () {
for(var i in this) { //iは、オブジェクトのプロパティなどの文字列
var child = this[i]; //this[i] は、値または参照値
if(child instanceof MovieClip) { //インスタンスタイプがムービークリップならば
child.stop();
}
}
}
--------------------------------------
さすがにキャッシュページのURLは書きにくいので,
詳細が必要でしたらそのページを検索して参考にしてください。
この for文 の書き方は,Flash ではあまり目にしませんが,VBA ではよく目にする形です。
Excel VBA のページで,あまり参考にはならないかもしれませんが…。
「★For Each...Next ステートメント」
http://www.sigoto.co.jp/excel/statement/state09. …
というわけで,
上の引用スクリプトをボタンのスクリプトとして,
また _root に関して通用するようにカスタマイズすると次のようになります。
--------------------------------------
on (release) {
for (var i in _root) {
var child = _root[i];
if (child instanceof MovieClip) {
child.stop();
}
}
// ココにmpeg再生のスクリプトを書く
}
--------------------------------------
しかし,これでは _root に対する 子(child)MC のタイムラインの動きしか止まりません。
もし,その 子(child)MC の中にさらに 子(child)MC があった場合は次のようになります。
--------------------------------------
on (release) {
for (var i in _root) {
var child = _root[i];
if (child instanceof MovieClip) {
child.stop();
for (var j in _root[i]) {
var grandchild = _root[i][j];
if (grandchild instanceof MovieClip) {
grandchild.stop();
}
}
}
}
// ココにmpeg再生のスクリプトを書く
}
--------------------------------------
コピペして「自動フォーマット」ボタンを使ってインデントをつけてもらえばわかりやすいですが,
かなり入れ子状になっています。
しかし,まだこれでは _root に対する 孫(grandchild)MC のタイムラインの動きしか止まりません。
もし,その 孫(grandchild)MC の中にさらに 子(child)MC があった場合は…
と,書いているときりがないので,もしそんな場合は考えてください。
同じ要領で行けますよ。
ちなみに
ひまご【曾孫】 は great-grandchild らしいので great_grandchild くらいをオブジェクト名に使って
さらにちなみに,
ひひまご【曾曾孫】 は知りませんので,super_great_grandchild くらいをオブジェクト名に使えば良いのではないでしょうか。
オブジェクト名なんてどうでもいい話ですけどね。
stop(); しか書いていませんが play(); も同じですからわかりますよね。
--- 動作環境及び注意 ----------------
以上のスクリプトは,
作成可能環境 Flash MX 以上
動作環境 Flash Player 6 以上
です。
ちなみに SWF を非圧縮でパブリッシュすると,Flash Player 5 でも閲覧可能ですが,
ボタンをクリックしたとたん,for文ループで無限ループに入り,フリーズしてしまいます。
今時 Flash Player 5 の方もいないとうので,大丈夫だと思いますが,
SWF は圧縮でパブリッシュして,
Flash Player 5 以下の方には閲覧をご遠慮頂く方が良いと思います。
ありがとうございます!!
いつもいつもすみません><
#2さんのやり方で出来ました。
わざわざ説明いただいてありがとうございます。
大変勉強になりました!
No.3
- 回答日時:
#1です。
すみません,代返よろしいでしょうか。
> FLASH再生中に右クリックして
> 再生のチェックボックスのチェックをはずすと
> ムービーが止まりますよね?
Windows 環境と Mac環境で違うようです。
Windows 環境では,
再生のチェックボックスのチェックをはずすと
_root のタイムラインの動きしか止まらず,
MC 内の動きは動きっぱなしになりますが,
Mac では, _root のタイムラインの動きどころか,MC内の動きまで止まります。
また Mac 対応の全てのブラウザでそうなのかはよくわかりません。
> あれはなぜでしょう。
ブラウザか,OSか,
その環境対応の Flash Player の仕様でしょう。
> 右クリックメニューをカスタマイズできると思うので
> あれを使ってうまく出来ることもあるのでしょうか?
こういうことでしょうか↓?
--------------------------------------
// コンテキストメニュー作成
myMenu = new ContextMenu();
// コンテキストメニューアイテムオブジェクト作成
myMenu1 = new ContextMenuItem();
// キャプション名の設定
myMenu1.caption = "★全てストップ★";
// 動作する関数の指定
myMenu1.onSelect = stopAllMc;
// --動作するユーザ関数の定義--
// #2の方のAS無断引用です(謝)
function stopAllMc(mc:MovieClip) {
for (var obj in mc) {
if (mc[obj] instanceof MovieClip) {
mc[obj].stop();
stopAllMc(mc[obj]);
//再帰処理
}
}
}
// コンテキストメニューにアイテムを割り当て
myMenu.customItems.push(myMenu1);
// コンテキストメニューをメニューに割り当て
_root.menu = myMenu;
---------------------------------------
参考URL
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2149143
↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=2149143
ほんとに何から何まですみません・・
マックと違うのですね。。
普通に考えたら単純そうな作業ですが
すべていっぺんに停止ってこんなに複雑なのですね^^
大変勉強になりました!
こんなに毎回詳しく書いてくれて
神様にしかみえません 笑
ありがとうございました!
No.2
- 回答日時:
再帰処理を使えば子、孫、曾孫…のMCの動きを止めれますよ。
再帰処理というのは関数の中で自分自身を呼び出す処理のことです。
//----------------------------------------------
//関数 mc:ムービークリップ
function stopAllMc(mc:MovieClip) {
for (var obj in mc) {
if (mc[obj] instanceof MovieClip) {
mc[obj].stop();
stopAllMc(mc[obj]);//再帰処理
}
}
}
//関数呼び出し
stopAllMc(_root);//最初にMCを指定
//----------------------------------------------
MCの中にMCが見つからなくなるまでループするので全てのMCでstop()が実行されます。
ただし、最初に指定したMCの中を全て見て回るので効率が悪いです。
MCの数が決まっているならインスタンス名をつけて配列にして管理した方がいいかもしれません。
var mc_array = new Array();
//全てのmcを配列に入れる
mc_array[0] = _root.mc1;
mc_array[1] = _root.mc1.childmc1;
mc_array[2] = _root.mc2;
for (var i = 0; i<my_array.length; i++) {
my_array[i].stop();
}
ありがとうございます!
そのままやったら見事とまりました!!
一つお聞きしたいことがあるのですが、
FLASH再生中に右クリックして
再生のチェックボックスのチェックをはずすと
ムービーが止まりますよね?
あれはなぜでしょう。
右クリックメニューをカスタマイズできると思うので
あれを使ってうまく出来ることもあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ブルーレイ・プレーヤー・レコーダー シャープ BD-S520 録画中の一時停止画面 4 2022/10/13 17:59
- YouTube 最近スマホでYouTubeやツイッチで動画を見ていると急に一時停止することがあります。画面を触ってい 5 2023/07/09 18:23
- スピーカー・コンポ・ステレオ USBボリュームコントローラーでミュートのボタンを押してもitunesなどの再生・一時停止の機能と連 2 2023/05/07 19:08
- その他(動画サービス) Tver アンケートに回答しても視聴できない(何度もアンケート画面が開く) 1 2023/01/13 21:47
- テレビ テレビ(TOSHIBAのREGZA)にてAmazonPrimeVideoを再生することができません。 3 2022/08/20 19:18
- YouTube youtubeチャンネルの自動再生を止めたい 3 2023/03/20 13:15
- 電車・路線・地下鉄 山手線で、緊急でもないのに非常停止ボタンを押して駅員に怒られる動画がありましたが、 イタズラや緊急で 6 2023/03/05 12:49
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
- その他(生活家電) ディーガのリモコンについて 3 2022/12/20 08:51
- Chrome(クローム) Google Chrome の同期が必ず一時停止になってしまい困っています。 GoogleChrom 2 2023/02/04 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダウンロードしたデジブックはa...
-
VBAのコンボボックスの年月表示...
-
この曲はなんでしょう?
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
フラッシュゲームアーカイブ2
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashplayerの運用について
-
Windows10重い
-
ロック画面に天気を表示したい
-
ヘッダーデザインをするさい形...
-
大学からの課題をやるのに、Ado...
-
更新されて起きた問題
-
FLASH MX で作成した、flashやA...
-
アメリカから買ったダウンロー...
-
iframe インラインフレームにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ipconfig /releaseって何ですか?
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
webページ上、TABフォーカス出...
-
プログラミング、アーキテクチ...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
YOASOBI
-
RPG(AS400)の本、サイトってあ...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
ホームぺージ制作で間違って重...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
【VB.NET】別Formのボタンが押...
-
テキストボックスにセルの値を...
-
UWSCのBTN関数について。
-
【Photoshop】レイヤー効果の境...
-
四乗根を英語で言うと・・・
-
static関数がmapファイルに載ら...
おすすめ情報