• ベストアンサー

Frashプロジェクタに外部ファイルを読み込ませるには?

FlashBasicを使っています。 以下のようなScriptを書いて、同じフォルダ内にあるJPEGファイルをScrollPaneコンポーネントに表示させようとしているのですが、SWFの場合は上手くいくもののexe形式にpublishするとダメです。 -- myScrollPane.contentPath = "image.jpg"; -- どうすればいいか、ご存知の方がおられましたら、お教え願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

画像とプロジェクタファイル( exe ファイル)を日本語などの全角文字を含む名前の付いたフォルダに置いていたり、プロジェクタファイル自体のファイル名に全角文字を使っていませんでしょうか? プロジェクタファイルのファイル名や配置されているフォルダ名のどこかに全角文字の入っている場合は、ご質問文の通りの作成方法ですと ScrollPane コンポーネント内に画像が表示されません。 しかし swf ファイルの場合は、ファイル名などに全角文字が含まれていても画像は表示されます。 ファイル名を指定するのに使われる情報は”パス”と呼ばれますが、パスに全角文字が含まれているようでしたら、フォルダ名やファイル名を全て半角の英数字だけの名前に直してみてください。 デスクトップにあるファイルも、パスに全角文字が入ります。 デスクトップにプロジェクタファイルを作成している場合は、他のフォルダに移動し、半角の英数字だけでフォルダ名やファイル名を付けてください。 ちなみに、  myScrollPane.contentPath = "/image.jpg"; というように先頭に” / ”を付けてファイル名を指定すると、パスに全角文字が含まれているプロジェクタファイルからでも同じフォルダにある外部ファイルを読み込むことができ、コンポーネント内に画像が表示されます。 ただ、このような回避策が一応あるとはいえ、exe 形式のようにプログラムそのものに関わるようなデリケートなファイルを作る時は、全角文字や特殊な文字を含むファイル名やフォルダは使わない方が無難です。 昨今のOSは日本語や長いファイル名も当たり前のように利用できますが、プログラムの世界では、全角文字は半角の英数字と違って様々な制約があります。 ファイル名に限らず ActionScript で利用する識別子名やインスタンス名も、全角文字のせいで不可解な不具合が起きる場合がありますので、半角の英数字だけで命名する習慣をつけるといいでしょう。 Mac 版の Flash で作った Windows 用のプロジェクタも、同様に、読み込むファイルのパスの書き方が原因で外部ファイルを読み込めないケースがあるようです。  ・Mac で作成した Windows プロジェクタ内の外部 SWF が読み込めない   http://www.macromedia.com/jp/support/flash/ts/documents/fl0363.html ↑これは ScrollPane コンポーネントの話でも JPEG 画像を読み込む話でもありませんが、ScrollPane も内部では外部ファイルを読み込む処理をしており、外部ファイルを指定するパスの書き方のせいで読み込めなくなるという点では JPEG 画像でも swf ファイルでも同じです。 Mac で制作なさっている場合はこちらが参考になるかと思います。 ********************************** Windows XP ・ Flash Professional 8 で、ScrollPane コンポーネントのインスタンスを置いてフレーム1にご質問文にあるスクリプトを書き、swf ファイル・Windows 用プロジェクタ形式ともに書き出してみましたが、フォルダやファイルの名前に全角文字を含まないようにして作ると正常に表示されましたよ。 念のため、作った swf ファイルを Flash 8 に付属のスタンドアロンプレイヤーで開き、「ファイル」→「プロジェクタの作成」でも書き出してみたところ、特に問題はありませんでした。 少なくとも、プロジェクタファイルに書き出すプログラムの致命的なバグやコンポーネントの不具合ではなさそうです。 まあ、今時のアプリケーションなのに全角文字を含むパスに上手く対応できていないのは、不具合と言えるかも知れませんが。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

どうでも良いことと思って無視をしているわけではなくて, 解決策が見つからないので回答が書けないのです。 とりあえず,環境などの違いによる,結果が必要であると思ったので報告させていただきます。 私の環境は,WinXP の Flash Professional 8 の方ですが, 質問者様と全く同じ現象です。 SWF を Flash のスタンドアローンプレーヤーで見ても,ScrollPane にロードされたものがちゃんと見えます。 プロジェクタに書き出したときだけ見えません。 先に,スタンドアローンの Flash Player 8 を起動させて, (C:\Program Files\Macromedia\Flash 8\Players\SAFlashPlayer.exe) 「ファイル」→「開く」→「参照」で, そこから SWF を読み込んでも,正常に動作します。 しかし,スタンドアローンの Flash Player 8 を起動させて, そこから SWF を読み込んだ状態で, 「ファイル」→「プロジェクタの作成」で作成した物は,ScrollPane 内に何も表示されません。 質問者様が書かれている,スクリプトをSWFに変えて,  myScrollPane.contentPath = "image.swf"; その「image.swf」のフレーム1に, trace(this); と書いてみましたが, _level0.myScrollPane.spContentHolder という値(インスタンス名)が得られるだけで, その spContentHolder に直接 koadMovie() をかけても,何にもなりませんでした。 --------------------------------- 以下も根本的な解決策ではありません。 ご了承句ください。 うまく行った方法があります。 私, スタンドアローンの Flash Player 7 を持っているのですが, Flash 8 でパブリッシュした SWF ファイルを スタンドアローンの Flash Player 7 で開き, その状態で,「ファイル」→「プロジェクタの作成」で作成した物は,ScrollPane 内に無事JPEG が表示されました! 本屋さんなどで体験版付きの,Flash MX 2004 の解説本を買えば, Flash MX 2004 の体験版がインストールできて,そこから,Flash Player 7 を取り出すことができます。 それで,スタンドアローンの Flash Player 7 を手に入れられたらどうでしょうか。 と,言ってみましたが, 全然解決策とは言えない解決策ですね。 私は,何でもバグの責任にするのが嫌いで,滅多にバグという言葉は口にしないのですが, このケースはスタンドアローンの Flash Player 8 のバグだと思います。 今現在,スタンドアローンのFlash Player 8 のアップデートは出ていません。 現在作成中のものをあきらめるか, アップデートを待つくらいしかないような気がします…。

関連するQ&A