![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
actionScript3.0にて外部xmlファイルに記述された複数のswfファイル名を読み込み、
それらのファイルを連続で再生させるシステムを作成したいのですが、なかなか思うように動作してくれずに困っています。
flashの開発環境は、windowsXP、flashCS4、actionScript3.0です。
テストで作成したxmlファイルの中身は、下記のようになっています。
00.swfを再生、再生し終えたら、01.swfを再生、01.swfを再生し終えたら、02.swfを再生・・・という動作を希望しています。
<?xml varsion="1.0" encoding="UTF-8"?>
<swflist>
<swfdata>
<filename>00.swf</filename>
</swfdata>
<swfdata>
<filename>01.swf</filename>
</swfdata>
<swfdata>
<filename>02.swf</filename>
</swfdata>
<swfdata>
<filename>03.swf</filename>
</swfdata>
<swfdata>
<filename>04.swf</filename>
</swfdata>
</swflist>
おすすめのサンプル、もしくは書籍がありましたら教えてください。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
まず細かい所から
<?xml varsion="1.0" encoding="UTF-8"?>
↓変更↓
<?xml version="1.0" encoding="UTF-8"?>
ですね(varsion → version)。
そのXMLがSWFなどと同じフォルダに
「list.xml」というファイル名で存在するとします。
その場合のフレームに書くスクリプト例↓
==============
//---XML部---
//Flash内のXMLインスタンスを宣言
var my_xml:XML;
//XMLファイルロード用インスタンスを作成
var xml_ld:URLLoader = new URLLoader();
//XMLファイルのリクエストインスタンスを作成
var xml_rq:URLRequest = new URLRequest("list.xml");
//XMLファイルロード完了時に xmlOnLoad を実行
xml_ld.addEventListener(Event.COMPLETE, xmlOnLoad);
//関数 xmlOnLoad の定義
function xmlOnLoad(evt:Event):void {
//XMLインスタンスを作成
my_xml = new XML(xml_ld.data);
//swfLoad を実行
swfLoad();
}
//XMLファイルをロード
xml_ld.load(xml_rq);
//---SWF部---
//カウント用変数 cnt を用意
var cnt:uint = 0;
//外部SWFファイルロード用インスタンスを作成
var swf_ld:Loader = new Loader();
//外部SWFファイルロード用インスタンスを配置
swf_ld.x = 20;
swf_ld.y = 10;
this.addChild(swf_ld);
//外部SWFファイルロード時swfOnLoadを実行
swf_ld.contentLoaderInfo.addEventListener(Event.COMPLETE, swfOnLoad);
//関数 swfOnLoad の定義
function swfOnLoad(evt:Event):void {
//毎フレームwatchSWFを実行
swf_ld.addEventListener(Event.ENTER_FRAME,watchSWF);
}
//関数 watchSWF の定義
function watchSWF(evt:Event):void {
var all_frm:uint = MovieClip(swf_ld.content).totalFrames;
var now_frm:uint = MovieClip(swf_ld.content).currentFrame;
//再生フレームが全フレーム数になれば
if (now_frm == all_frm) {
//毎フレームwatchSWFを実行するリスナーを削除
swf_ld.removeEventListener(Event.ENTER_FRAME,watchSWF);
//cntが XMLのノード数-1 未満であれば
if (cnt < my_xml.children().length() - 1) {
//cntに1を加算
cnt++;
} else {
//それ以外はcntを0に戻す
cnt = 0;
}
//swfLoad を実行
swfLoad();
}
}
//関数 swfLoad の定義
function swfLoad():void {
//XMLからcnt番のfilenameの値を取り出す
var swf_str:String = my_xml.children()[cnt].filename;
//SWFファイルのリクエストインスタンスを作成
var swf_rq:URLRequest = new URLRequest(swf_str);
//SWFファイルをロード
swf_ld.load(swf_rq);
}
==============
![「actionScript3.0にて外部x」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/1373636_5497e4c41526f/M.jpg)
すばらしいです。。。きちんと動作しました。
画像まで添付していただいて、本当に助かりました。
今回の質問とは関係ないのですが、このシステムを元に
特定のswfファイルが1日に再生できる回数を設定したり(たとえば、01.swfは50回、03.swfファイルは25回など)、再生させる期間および時間帯を自由に指定できるようにするシステムを構築する予定です。
作成しなくてはならないシステムを考えると、スクリプト自体が膨大になることが予想されるので、
ご伝授いただいた「フレームに記述するタイプのスクリプト」を、「外部ファイルに記述するタイプのスクリプト」に書き直させていただくことになると思います。
(packageやらimportやら、わからないことだらけなのですが。。。汗)
ほとんど初心者の私が、そのようなシステムを構築できるものだろうかとも思いますが、何とかやり遂げたいと思います。
どうしても突破できない壁に当たってしまった際には、また質問に書き込ませていただきますので、その際は何卒よろしくお願いします。
今回は本当にありがとうございました。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AS3でif関数で外部SWFを読み込...
-
PDFファイルの倍率を変えて保存...
-
サポートされたファイル形式お...
-
【VBA】マクロの入ったファイル...
-
個別に違う添付ファイルを付け...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
Googleマップに保存した地点が...
-
イベントログの保存先の変更方法
-
e-taxで送信ファイルの拡張子が...
-
stdio.hの中身
-
PC内で速度を遅くした音源をCD...
-
eclipseの保管が押せない!
-
EXCEL/VBAでWORDファイル名の先...
-
情けない話ですが成田エクスプ...
-
A4の紙に印刷されている文字を...
-
エアコンの冷媒 R410Aの重...
-
リストビューの選択状態を取得...
-
拡張子「.IDJ」を、windo...
-
パソコン名、IPアドレスをH...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flashのループが止まりません。。
-
swf終了後、違うswfに自動で移...
-
外部swfのアップロード
-
複数あるflashをファイルをペー...
-
外部swfの読み込みをくりかえし...
-
*SharedObjectで保存したデー...
-
お世話になります。windowsXP ...
-
AS3でif関数で外部SWFを読み込...
-
子swfから親swfのstageを参照し...
-
MovieClipLoaderの使い方がわか...
-
actionScript3.0にて外部xmlフ...
-
2つのswfをぴったり同時に再生...
-
英語圏向けにFLASHを作っ...
-
ブラウザの更新ボタンで画像を...
-
ActionScript3.0のswf読み込み
-
外部swfで読み込んだ外部txtフ...
-
外部swfの読み込みでnow loa...
-
Googleマップに保存した地点が...
-
サポートされたファイル形式お...
-
個別に違う添付ファイルを付け...
おすすめ情報