はじめまして、こんにちは。
Flash初心者です。
[使用環境]
Flash MX 2004
Win 2000
[質問]
1フレーム目にはslide1.○○○、2フレーム目にはslide2.○○○、
3フレーム目にはslide3.○○○といったふうに画像をnextボタンと
backボタンを使って切り替わるようなものを作っています。
※○○○にはjpg又はswfが入ります。
+――――――――――――――――――+
| +―――――――+ +――――+ |
| | | |back | |
| | | +――――+ |
| | picture | |
| | | +――――+ |
| | | |next | |
| +―――――――+ +――――+ |
+――――――――――――――――――+
・外部画像を読み込んで表示するには「 picture.loadMovie("slide1.jpg"); 」又は、
「 picture.loadMovie("slide1.swf"); 」で表示できます。
・slide1はjpgかswfのどちらかのファイルしかなく、shile2、slide3も同様です。
・1フレーム目がswfの場合「 picture.loadMovie("slide1.swf"); 」、
2フレーム目がjpgの場合「 picture.loadMovie("slide2.jpg"); 」
というように拡張子を指定してスクリプトを書くのではなく、
条件式を使って画像を表示するにはどうすればよいのでしょうか。
・もしくは、エラーを無視して次の行へいくというプログラムはあるのでしょうか。
どなたか分かるようでございましたらご教示下さい。お願いします。
No.1ベストアンサー
- 回答日時:
MovieClip.loadMovieメソッドを使うのではなく,
MovieClipLoader()クラスのメソッドを使えばできます。
1フレーム目のスクリプト例
----------------------------------------------------
// ファイルネームの登録(※可変)
my_file = "slide1";
// MovieClipLoaderインスタンスの生成
var my_mcl:MovieClipLoader = new MovieClipLoader();
// リスナーオブジェクト生成
var oListener:Object = new Object();
// ロード失敗時の処理
oListener.onLoadError = function(target_mc:MovieClip, error_str:String, nHttpStatus:Number) {
// 外部SWFファイル"slide1.jpg"をインスタンスpictureにロード
my_mcl.loadClip(my_file+".jpg", picture);
};
// イベントリスナーの登録
my_mcl.addListener(oListener);
// 外部SWFファイル"slide1.swf"をインスタンスpictureにロード
my_mcl.loadClip(my_file+".swf", picture);
----------------------------------------------------
Flash MX 2004(Flash Player 7)以上 です。
取り急ぎ失礼します。
SWF、JPEGファイルを読み込みたい(FlashMX2004以降)
http://hakuhin.hp.infoseek.co.jp/main/as/import. …
MovieClipLoaderクラスについて
http://www.fumiononaka.com/TechNotes/Flash/FN050 …
No.2
- 回答日時:
#1です。
朝回答しないと,夜まで回答できないので,
#1では出勤寸前にドタバタで回答しました。
それで,
スクリプト書いた→SWFとJPEG作った→動かした→動いた→回答した
という作業を10分くらいで済ませました。
間違った回答をしたわけではありませんが,
妙なゴミが入っていたり,
SWF も JPEG も両方ともなかった場合の処理が抜けていたり,
フレーム2 以降のことを考えて作ったものではありませんので,
もう少しちゃんとした形のスクリプトを回答し直します。
基本的に#1と骨子は全く同じです。
ゴミを取ったのと使い勝手を考えたものです。
1フレーム目のスクリプト例 (コピペ可能)
--------------------------------------
// とりあえずストップ
this.stop();
// MovieClipLoaderインスタンスの生成
var my_mcl:MovieClipLoader = new MovieClipLoader();
// リスナーオブジェクト生成
var oListener:Object = new Object();
// イベントリスナーの登録
my_mcl.addListener(oListener);
// ファイルをロードするユーザー定義関数の定義
function loadFile(my_file:String) {
// ロード失敗時の処理
oListener.onLoadError = function() {
if (flag == "s") {
// 外部JPGファイルをインスタンスpictureにロード
my_mcl.loadClip(my_file+".jpg", picture);
// flag を j に
flag = "j";
// ※エラー処理が不要であればこの↓ else 文をカット
} else if (flag == "j") {
// インスタンス名my_textのダイナミックテキストにエラー表示
my_text.text = "SWFもJPEGもありません。";
}
};
// 変数 flag の値を "s" にする
var flag:String = "s";
// 外部SWFファイル"slide1.swf"をインスタンスpictureにロード
my_mcl.loadClip(my_file+".swf", picture);
// インスタンス名my_textのダイナミックテキストを初期化
my_text.text = "";
}
// ファイルをロードするユーザー定義関数の実行
loadFile("slide1");
--------------------------------------
2フレーム目のスクリプト例
--------------------------------------
// ファイルをロードするユーザー定義関数の実行
loadFile("slide2");
--------------------------------------
以降3フレーム目なら,
loadFile("slide3");
などのように,".swf" や ".jpg" を取ったファイル名を引数にして,
フレーム1 の ユーザー定義関数 loadFile(); を実行させる形のものです。
なお,nextボタン と backボタンは
書く必要はないと思いますが次のような感じでしょうね。
nextボタンのスクリプト例
--------------------------------------
on (release) {
this.nextFrame();
}
--------------------------------------
backボタンのスクリプト例
--------------------------------------
on (release) {
this.prevFrame();
}
--------------------------------------
※作成環境: Flash MX 2004以上
パブリッシュ設定: ActionScript 2.0
動作環境: Flash Player7以上 です。
#1のままだと,
SWF も JPEG もなかった場合,
Flashが,存在しない JPEG のロードを試み続けるので,よろしくない形です。
ですから変数 flag を立てて,両方なかった場合は,
「my_text」というインスタンス名のダイナミックテキストにエラー表示をするしくみのものに変えました。
ですから,「my_text」というインスタンス名のエラー表示用のダイナミックテキストを,
ムービークリップ picture より上のレイヤーに作ってくだされば,指定した文字列がエラー表示されます。
もしエラー表示が不要でしたら,
「my_text」というインスタンス名のダイナミックテキストを用意せずに,
// ※エラー処理が不要であればこの↓ else 文をカット
} else if (flag == "j") {
// インスタンス名my_textのダイナミックテキストにエラー表示
my_text.text = "SWFもJPEGもありません。";
この4行を削除してください。
するとSWFもJPEGも両方ともなかった場合のエラー処理は行われません。
このエラーについてですが,
> ・もしくは、エラーを無視して次の行へいくという
> プログラムはあるのでしょうか。
と書かれている意味がよくわかりません。
Flash は基本的にエラーが起きても何事もなかったかのようにそのことは無視して次の処理へと進みます。
Flash はいつもポーカーフェイスです。
ですから,
上のスクリプトのように「エラーを出させること」の方に苦労するのです。
loadMovie だと,なかなか簡単にエラーの表情を見せてくれないので
(出そうと思ったら出せますが普通ではありません),
MovieClipLoaderクラスの onLoadError イベントハンドラで,
エラーをわざわざ取り出しているのです。
エラーの表情を見せるときは,
本当にFlash Payer が苦悩したときです。
for 文などが,(半)無限ループに入ったときなどに,
死にかけ寸前で
「このまま処理を続けると,どうのこうの…」
「処理を続行する?しない?」というような困窮のダイアログが出てきます。
loadMovie で SWF や JPEG がないくらいのエラーでは,
ファイルが表示されないだけで,何事もなかったかのように次々に処理を続けます。
それが,Flash がスマートに見える1つの理由であり,逆に難しくて恐い面です。
参考URLは#1と同じですが1つ増えて…。
SWF、JPEGファイルを読み込みたい(FlashMX2004以降)
http://hakuhin.hp.infoseek.co.jp/main/as/import. …
MovieClipLoaderクラスについて
http://www.fumiononaka.com/TechNotes/Flash/FN050 …
関数
http://homepage3.nifty.com/ginga-b/MX/function.h …
sassakun様、早速のご回答ありがとうございます。
お礼が遅くなりましてすいません。
MovieClip.loadMovieメソッドを使うのではなく,
MovieClipLoader()クラスのメソッドを使えばいいのですね。
非常に詳しく分かりやすい回答で理解できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
【VB.NET】別Formのボタンが押...
-
VB6.0のHideのバグ?
-
CreateDialogについて
-
インスタンスとポインタ
-
VB6.0で、フォームから、別のフ...
-
テキストボックスにセルの値を...
-
VBAで改行の入ったデータの正規...
-
テキストボックスの中身をリセ...
-
【Photoshop】レイヤー効果の境...
-
テキストエリア内の文字列にリ...
-
ipconfig /releaseって何ですか?
-
【ExcelVBA】ファイル名をセル...
-
SNMPの標準MIBについて
-
フォームのテキストの入力数字...
-
Access2000 実行時エラー '3061':
-
IP Address 入力フォームについて
-
FLASHのActivescriptでオブジェ...
-
photoshopで書いた四角の枠の中...
-
VB.NETで数十行のプログラムを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
VB6.0で、フォームから、別のフ...
-
【VB.NET】別Formのボタンが押...
-
フォームの生成と破棄
-
VB6.0のHideのバグ?
-
DataTableの件数を取得したい
-
インスタンスとポインタ
-
ダミーウインドウ
-
Python でシャットダウンのコマ...
-
画像を一定時間ごとに切り替え...
-
CreateDialogについて
-
「Me」を「Form1」にするとエラ...
-
ウインドウハンドルとインスタ...
-
背景画像が拡大縮小しつつ、大...
-
EXEからDLLへ移植
-
Flashの画面をJPEG画像にしてメ...
-
携帯Lite1.1用のプログラム
-
new演算子について教えていただ...
-
getURLでの変数の渡し方
-
【ActionScript】コンボボック...
おすすめ情報