![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。今回はswfのランダム再生に関して質問させていただきます.
使っているバージョンはFLASHCS3/AS2.0です.
たくさんのランダム再生に関する質問を参考に進めていたのですが,どうしても自分の理想通りにならないので質問させていただきました.
やりたいこと.
→btn というボタンをクリックして,mcに3種のswfを3連続ランダム再生したい.
自分で試してつくってみたところ,btnをクリックすると確かにランダムに3種のswfを選択しているようなのですが,選択した1種のswfを永遠に再生するだけになってしまいます.もちろんbtnをクリックするたびにランダムに再生してほしいのですが,3種のswfを3連続再生してほしいのです(重複可).
「3連続再生したあと実行をやめる」というASもわかりません.
どうかご回答願います.
No.3ベストアンサー
- 回答日時:
とりあえず,
ActionScriptなどを離れて動作の流れを考えてみます。
ボタンがクリックされる
↓
------------------------------
ランダムな外部SWF(仮称A)をロードする
そしてカウント用変数の値を 1 にする
↓
外部SWF(仮称A)がロード&再生される
↓
外部SWF(仮称A)の再生が終了する
------------------------------
↓
------------------------------
もしカウント用変数の値が3未満であれば
ランダムな外部SWF(仮称B)をロードする
そしてカウント用変数に1をプラスする
↓
外部SWF(仮称B)がロード&再生される
↓
外部SWF(仮称B)の再生が終了する
------------------------------
↓
------------------------------
もしカウント用変数の値が3未満であれば
ランダムな外部SWF(仮称C)をロードする
そしてカウント用変数に1をプラスする
↓
外部SWF(仮称C)がロード&再生される
↓
外部SWF(仮称C)の再生が終了する
------------------------------
↓
後は何かしても良いし,しなくても良い。
ActionScriptを離れて別の言語を使うとしても,
流れはだいたい上のようになります。
一番難しく,場合によってはできない(不確定)な部分がありますが,
それはどこかおわかりになりますか?
「3連続再生したあと実行をやめる」という部分ではありませんよ。
それは,
回数を指折り数えて3回になればそれ以上ロードしなければ良いだけです。
難しい,または不可能なのは次の部分です。
外部SWF(仮称A)の再生が終了する
外部SWF(仮称B)の再生が終了する
外部SWF(仮称C)の再生が終了する
つまり,
「外部SWFの再生が終了するのを検知する」
という部分が最難関で場合によっては不可能です。
なぜ不可能な場合があるかと言うと,
そもそも 「外部SWFの再生は終了しない」 ものもあるからです。
→例:アナログ時計やデジタル時計のSWF
例:HPでよく見るメニューなどナビゲーション系SWF
私は外部SWFの作成者ではありませんから,
外部SWFがどんなムービーなのか全くわかっていない状況です。
可能か不可能かなど私は判断できません。
外部SWFがそういうものではなく,
_root(シーン1 などメインのタイムライン)を使った昔からある素朴なアニメーションである場合に限っては,
「最終フレーム到達=再生終了」
ですから,次のようにすればできます。
外部SWFをロードする親SWFと同じフォルダに
外部SWF「1.swf」,「2.swf」,「3.swf」があるものとします。
親SWF(親FLA)には,
「loadMC」 というインスタンス名を付けたムービークリップと
「loadBTN」 というインスタンス名を付けたボタンがあるものとします。
「loadMC」 や 「loadBTN」 が存在するフレームに,
次のように書けばそれなりのものができます。
/////////////////////////////////////////////////////////////////////
// カウント用変数 cnt の宣言
var cnt:Number;
// 「loadBTN」クリック時の動作定義
loadBTN.onRelease = function():Void {
//
// このボタンのボタン機能を無効にする(重複クリック禁止策)
this.enabled = false;
// loadMC に ランダムな1~3.swf をロード
loadMC.loadMovie((Math.floor(Math.random()*3)+1)+".swf");
// カウント用変数 cnt を 1 にする
cnt = 1;
//
_root.onEnterFrame = function():Void {
// loadMC の再生フレームが最終フレームに達した場合
if (loadMC._currentframe>1 && loadMC._currentframe == loadMC._totalframes) {
//
// もし cnt が 3 未満であれば
if (cnt<3) {
// loadMC に ランダムな1~3.swf をロード
loadMC.loadMovie((Math.floor(Math.random()*3)+1)+".swf");
// カウント用変数 cnt に 1 をプラスする
cnt++;
} else {
// loadMCから外部SWFをアンロード
loadMC.unloadMovie();
// loadBTNボタンのボタン機能を有効にする
loadBTN.enabled = true;
// この onEnterFrame を削除
delete this.onEnterFrame;
}
}
};
};
/////////////////////////////////////////////////////////////////////
上のスクリプトにある,
// このボタンのボタン機能を無効にする(重複クリック禁止策)
this.enabled = false;
とか,
// loadMCから外部SWFをアンロード
loadMC.unloadMovie();
とか,
// loadBTNボタンのボタン機能を有効にする
loadBTN.enabled = true;
は,適当に勝手に付けてみただけです。
不要であれば取っても問題はないと思います。
> 3種のswfを3連続再生してほしいのです(重複可).
ということですから重複はします。
重複しない確率は 2/9 です。
だいたいの場合(9回クリック中 7回ぐらい)は同じSWFが重複出没します。
繰り返しますが,上のことができるのは,
外部SWFが_rootのタイムラインを用いた素朴なアニメーションであって,
なおかつ最後のフレームに到着することが「ムービー終了」である場合です。
アナログ時計などActionScriptで動かしたものに "限らず",
ムービークリップ内のタイムラインを使ったアニメーションムービーであっても上のスクリプトは使えません。
また,_rootのタイムラインを用いたアニメーションであっても,
最終フレームに到達することなく途中のフレームで折りかえし再生したり,
途中のフレームでストップする場合は知りません。
「外部SWFの再生が終了するのを検知する」
ここがわからないと(どういう条件か明記されないと)本当は回答できないご質問です。
------ ------ ------ ------
と以上のように書いてみましたが...
> 3種のswfを揃える人物はFlash操作ができない人を想定
> 3種のswfをそろえるだけで3種3連続ランダム再生できるには
> どうしたらいいでしょうか????
その条件では基本的に不可能ではないでしょうか。
どんな SWF をそろえられるかわかったものではありません。
ActionScript を使用したSWF などをそろえられてしまった場合は,
ムービーの最後が検知できないどころか,
別の SWF にロードしたその時点で _root や Stage や _x _y などが変わりますから,
「表示されない」「動かない」「暴走する」「フリーズする」などのことは当たり前に起こります(起こらない方が稀)。
また 外部SWF のパブリッシュしたバージョンも,
ロード親と一致させておかなければ変になって当たり前です。
ちなみに,
「1.swf」「2.swf」「3.swf」 を FlashPlayer7以下のSWFにパブリッシュして,
メインのSWFをFlashPlayer8のSWFしたところ,
上のスクリプトを使っても,
> 選択した1種のswfを永遠に再生するだけになってしまいます.
これと同じ現象が起きました。
『3種のswfを揃える人物』 に,
「用意する SWF は 必ず _root のタイムラインを使用した最終フレームをムービー終了とするムービーであること。」
「また用意する SWF は FlashPlayer○ 用にパブリッシュしたSWFを使用すること。」
などと条件を付けておけば大丈夫なのかもしれませんが,
『Flash操作ができない人』 であれば,
上の条件は何のことかさっぱりわかりませんね。
外部JPEGロードだと,その辺は関係ないので楽です。
Flash素材でも,
外部JPEGをロードする素材ばかりで,
外部SWFをロードする素材というのは普通はありません。
外部SWFが予測できませんし,不具合が起こることは目に見えてわかります。
まずは返事が遅くなったことをおわびします.
ネットがしばらくつながらないトラブルに見舞われていました(汗)
そして,たくさんのアドバイスありがとうございます!!!
教えてくださったスクリプトで大成功しました!!!!!!
自分でもこれを成功させるにはかなり多くの壁があるのは感じていたのですが,どうにか工夫して第三者にも使ってもらえるものをつくろうと制作している次第です.
とっっっっても役立ちました.ありがとうございました.
No.2
- 回答日時:
#1です。
補足ありがとうございます。が、今一つ理解できていません。
>3種のswfを揃える人物はFlash操作ができない人を想定して
FLASHの操作は、私の示した方法でもbtnと言うボタンをクリックするだけですが? (前提がそう書かれていますよね)
そして、アトランダムに1~6のSWFを表示させ、自動で最後に止める(つまりループさせない)と、言うことです。
>「3連続再生したあと実行をやめる」というASもわかりません.
と、おっしゃっているので、簡単なスクリプトしか示しませんでした。
各swfに変数をつけて、最後にランダムに次を再生、ただし1度読み込んだswfは変数で判断して、再生しない。というASは、if文を書けばできます。
この回答への補足
> A・B・Cのswfを各パターンでつないで、
と書かれた部分を私はFlashを用いて
「AAA」「ABB」「ABC」「ACC」「BBB」「CCC」
のswfを作るのかと解釈しました.
しかしsuzukoさんがおしゃっていたのは,
ASでこの6パターンにくくることを意味していたのでしょうか??
理解が足らなくてすいません.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 国産車 トヨタ純正ドラレコ DRD-H68S 3 2022/08/11 09:25
- iOS iosのshortcutアプリでmp3を連続再生させる方法 1 2022/05/02 20:54
- その他(パソコン・スマホ・電化製品) SDカードに曲を入れて、カーオーディオでランダム再生させるとカードに強い負荷がかかりますか? 5 2023/04/02 14:34
- Excel(エクセル) ランダムで四択の問題を作る場合にvbaで何を学べばいいでしょうか。 1 2022/04/14 16:45
- 数学 既存の数列のランダム性について(初歩的質問) 2 2022/06/07 20:04
- Windows 10 前回の質問の続きです。 あの後、システムのエラーが疑われたのでインターネットで調べて、ドライブのチェ 1 2023/05/21 23:55
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- フリーソフト AIMPに代わるおすすめのプレイヤー(フリーソフト)を教えてください 2 2022/08/11 20:32
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
- 音楽・動画 ノートパソコンで動画再生の設定の変更について*長文ですが何卒宜しくお願い致します。 3 2022/10/18 12:24
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbscriptでウィンドウズメディ...
-
Gifアニメの再生について(検索...
-
Flashのタイムラインの中の、「...
-
オプションボタンを矢印キーで...
-
車の運転時のメガネ 縁なし(...
-
ソーラーパネルのアルミフレー...
-
Flashで右クリックメニューにつ...
-
Flashでの連打ゲームの作成方法...
-
VBで動的に作成したパネルの上...
-
gotoAndPlayで特定のフレームま...
-
外部テキスト読み込み、横スク...
-
○秒後にフレーム移動
-
WEBブラウザの重複起動の禁止
-
ハードディスク DVD 読み...
-
スクリプトが何に記述されてい...
-
リフレッシュ・レート、フレー...
-
ドキュメントサイズの変更
-
大元のタイムラインの変数を初...
-
再読み込みが可能なPDFビューワ...
-
簡単な連打ゲームを作りたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpで音を鳴らす
-
FLASHでmp3プレイヤー
-
巻き戻しボタンを作りたいので...
-
Flashゲームのセーブ機能の作り方
-
vbscriptでウィンドウズメディ...
-
メディアプレーヤーで再生する...
-
yahooで画像検索すると
-
Gifアニメの再生について(検索...
-
エクセルで通知音
-
Flash swfのランダム再生
-
50秒後に2フレームへ行き再生開始
-
IEのActiveXコンポーネントにつ...
-
外部mp3のランダム再生について
-
複数のJavaScriptを順番に実行...
-
flashのBGMのoff/onボタン
-
WindowsMediaVideoをインライン...
-
パワーポイントにFLASHを埋め込...
-
webサイトに動画をはりつけ、ク...
-
フレーム内に移動したい
-
Flashで右クリックメニューにつ...
おすすめ情報