[AS3]テキストファイルの存在確認

このQ&Aのポイント
  • 外部から読み込むテキストファイルの存在確認方法を解説します。
  • actionscript3.0を使用してテキストファイルを読み込む際、ファイルの存在を事前に確認する方法について説明します。
  • テキストファイルが存在しない場合にエラーが発生するため、ファイルの存在を確認してから読み込む方法を紹介します。
回答を見る
  • ベストアンサー

[AS3]テキストファイルの存在確認

今、テキストファイルを外部から読み込んでその内容を表示するフラッシュをactionscript3.0で作っています。 ソースは以下のように、 import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.Event; var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest("data.txt"); myLoader.addEventListener(Event.COMPLETE, onComplete); myLoader.load(myRequest); function onComplete (eventObject:Event) { var my_str:String = eventObject.target.data mytextfield.text=my_str } というう風にしているのですが、テキストファイルがサーバー上に存在しないと、このアドレスは存在しないといわれエラーを吐き出すのでファイルが存在するか確認してから、読み込みたいのですが何か良い方法はないでしょうか? よろしくお願いします。

  • Flash
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • cspl
  • ベストアンサー率83% (55/66)
回答No.2

>ネットワークが故障していてエラーを出しても、 >ファイルが存在しなくてエラーを出しても、 >同じ扱いになるんですよね? 返ってくるIOErrorEvent.textの値でエラーの種類を判断することは可能です。 ファイルが存在しない場合は、"Error #2035: URL が見つかりません。"と返ってくるはずです。 参考URLにランタイムエラーがまとめてありますので、参考にしてみてください。ここに記載されている以外のエラーをFlashで取得しようとしても不可能です。

参考URL:
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/runtimeErrors.html
glarelance
質問者

お礼

なるほど~ どうもありがとうございました。

その他の回答 (1)

  • cspl
  • ベストアンサー率83% (55/66)
回答No.1

読み込むファイルが存在しない場合、IOErrorEvent.IO_ERRORでイベントを取れます。 例えば、下記のように設定しておけば、エラーは発生しないはずです。 ___________ myLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); function onIOError(event:IOErrorEvent) { trace("IO Error."); }

glarelance
質問者

お礼

解答ありがとうございます。 なるほど、AS3でのエラーはこうやって拾うんですね~。 ただ、これだと、ネットワークが故障していてエラーを出しても、ファイルが存在しなくてエラーを出しても、同じ扱いになるんですよね? 実は、このFlashは別の部分でテキストを読み込んで、読み込んだデータに対してCGIへデータ送信してサーバーにデータを書き込んでいるので、できればファイルの存在確認が出来た方が、安定性の高いプログラムになるので、ファイルの存在を確認したいのですが、何か良い方法はないものでしょうか?

関連するQ&A

  • [as3]flashで外部phpの読み込み

    外部phpを読み込みechoで表示した値をFlash上のダイナミックテキストに表示させたいのですが、どうしても上手くいきません。 ■現状は以下のようになっています。 ・外部phpファイルにはechoにて、contents=******************** という出力結果がでます。 ・ダイナミックテキストを作りダイナミックテキスト名がname_strになっています。 ・as3のルートの1フレーム目に以下のようにasを書いています。 import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.Event; // [2] URLLoaderとURLRequestインスタンスの生成 var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest("http://localhost.*******.php"); // [3] ロード完了時の処理をイベントリスナーに登録 myLoader.addEventListener(Event.COMPLETE, onComplete); // [4] 外部テキストファイルのロード実行 myLoader.load(myRequest); // [5] リスナー関数の定義 function onComplete (eventObject:Event) { var my_str:String = eventObject.target.data var myVars:URLVariables = new URLVariables(my_str); for (var name_str:String in myVars){ trace([name_str, myVars[name_str]]); } } ・環境はxamppにてローカルで作業をしています。 初心者でとんちんかんなことをしていまっているかもしれませんが、何卒よろしくお願い致します。

    • ベストアンサー
    • Flash
  • テキストファイルの読み込み方法

    すいません、また質問です。 http://hakuhin.hp.infoseek.co.jp/main/as3/loader.html#LOADER_03 var url : URLRequest = new URLRequest("test.txt"); var url_loader : URLLoader = new URLLoader(); // 読み込み完了時に呼び出されるイベント url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc); function LoaderInfoCompleteFunc (event : Event) { var str : String = url_loader.data; trace(str); } テキストファイルを外部から読み込んで表示させる方法は上記で分かりました。 テキストデータには以下の文章がタブ区切りで入っております。 さんま 1個 90円 たこ 1個 180円 上記の方法だとこれが全て表示されてしまっています。 これを一つ一つ表示や列、行だけ表示したいのですがどうすれば良いのでしょうか?。

    • ベストアンサー
    • Flash
  • FLASH,AS3.0 クリック後、xmlからファイルを取り出す方法

    as3.0初心者です。 恐れ入りますが、現在製作中のプログラミングに関することで教えていただきたいことがあります。 外部xmlより写真データを読み込み、ステージに並べるプログラムを作っています。参考書等のサンプルからステージに並べるまではわかったのですが、ボタン【インスタンス名:btn_a】をクリックした後に写真がステージに現れるようにアレンジしたいのですが…色々ためしてもエラーが出てしまいうまくいきません。どなたか教えていただけないでしょうか? 出来れば現在のプログラムをアレンジして使いたいと思っています。 初歩的な質問で申し訳ありませんがご教授いただけないでしょうか? ★xnlloader package { import flash.display.DisplayObjectContainer; import flash.system.System; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class PhotoXMLLoader { private var container:DisplayObjectContainer; private var xmlLoader:URLLoader; private var urlReq:URLRequest; //コンストラクタ public function PhotoXMLLoader(container:DisplayObjectContainer) { this.container=container; //URLLoaderのインスタンスを作る xmlLoader=new URLLoader(); //リスナーを登録する xmlLoader.addEventListener(Event.COMPLETE,onLoaded); //URLRequest urlReq=new URLRequest(); } //XMLファイルの読み込み public function loadXML(xmlurl:String,isUnicode:Boolean=true):void { //XMLファイルのURL urlReq.url=xmlurl; //unicodeでなければtrueに設定する System.useCodePage=! isUnicode; //読み込み開始 xmlLoader.load(urlReq); } //読み込み完了〜写真を並べる protected function onLoaded(eventObj:Event):void { //受信したxmlから値を取り出す var xmlObj:XML=new XML(xmlLoader.data); var photos:XMLList=xmlObj.photolist.photo; var w:int=290+10; var h:int=40+10; var row:int=1; for (var i:int=0; i<photos.length(); i++) { var photo:XML=photos[i]; //写真のURLを調べる var url:String="img/"+photo.@fname; //写真を読み込んで並べる var photoLoader:GoodLoader=new GoodLoader(url); photoLoader.x=w*(i%row); photoLoader.y=h*int(i/row)+200; ; container.addChild(photoLoader); } } } } ★goodloader package { import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import fl.transitions.Tween; import fl.transitions.easing.*; import flash.events.IOErrorEvent; public class GoodLoader extends Loader { var urlReq:URLRequest; var tw:Tween; public function GoodLoader(url:String) { //読み完了イベントのリスナーを登録する this.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); //IOエラーイベントのリスナーを登録する this.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); urlReq=new URLRequest(url); load(urlReq); } //読み込みエラーに対応する protected function onIOError(eventObj:IOErrorEvent):void { urlReq.url="image/io_error.jpg"; load(urlReq); } //フェードインで表示する protected function onLoaded(eventObj:Event):void { tw=new Tween(this,"alpha",Regular.easeInOut,0,1,1,true); } } }

    • ベストアンサー
    • Flash
  • PHPの取得情報をFlashで表示する方法

    flashについて質問です。 time.phpに現在の時間を取得する <?php echo date("Y/m/d"); ?> を書いて保存し、 それをtimeLoad.as(AS 3.0)をドキュメントクラスとするflash上で表示したいのですが、 package{ import flash.display.MovieClip; import flash.text.TextField; import flash.text.Font; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; public class timeLoad extends Sprite{ private var tf:TextField; public function timeLoad():void{ var myRequest:URLRequest = new URLRequest("time.php"); var myLoader:URLLoader = new URLLoader(); myLoader.load(myRequest); tf = new TextField(); tf.defaultTextFormat = new TextFormat("Helvetica",10,0x000000); tf.x = 0; tf.y = 0; tf.text = myLoader.data; addChild(tf); } } } tfの内容が2011.1.1などになるのが目的です。 swfファイル、swfを埋め込んだhtmlファイル、phpファイルは同じ階層にあります。 php側flash側の訂正点をご指摘いただけると嬉しいです。

    • ベストアンサー
    • Flash
  • 【AS3.0 変数をPHPにPOSTする方法】

    【AS3.0 変数をPHPにPOSTする方法】 開発環境:WinXP ADOBE CS4 ActionScript3.0 すいません。教えてください。 Flashで得た複数の値を外部ファイルに出力したいと考えています。 例えば、btnA・btnB・btnCという3つのボタンがあり、 ボタンをクリックすると、クリック数がカウンターになり、 その値をPHPファイルにPostしたいと考えています。 現在のソース(btnAのみ) ---------------------------------------------------------------- var req:URLRequest = new URLRequest ("http:++++++.php"); req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.num01 = 0; req.data = variables; var loader:URLLoader = new URLLoader (req); var are01=0 var num01=0 a_btn.addEventListener(MouseEvent.CLICK,aClick); function aClick(event:MouseEvent):void{ var num01=are01++ trace(num01) var printdata:URLVariables = new URLVariables(event.target.data); loader.load(req); } -------------------------------------------------------------- num01の数値がトレースはされているのですが、 phpの値に代入されません。 --------------------------------------------------------------- phpソース $comment = $_POST['num01']; print "rData=" . $comment;</body> ---------------------------------------------------------------- 同時に複数の値・仮にnum02・num03も同様にPHPにPOSTしたいと考えているのですが、 その際の方法がわかりません。 恐れ入りますが、ヒントだけでもよいので教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 【AS3.0】外部テキストから配列を読み込む

    fla→PHPに変数・配列のデータを送り、 下記のようなテキストデータを.txtファイルに出力するものを作りました。 var1=1&var2=0&array1=1,2,3&array2=1,2,3,4&array3=1,2,3,4,5 送られた変数・配列はすべて連なっており、&で区切られています。 変数を読み込むには下記で出来るようですが、 参考URL:http://ninotk.oops.jp/weblog/?p=30 private var filePath:String = "topics.txt"; private var tpcLoader:URLLoader; init(); function init(){ tpcLoader = new URLLoader(); tpcLoader.dataFormat = URLLoaderDataFormat.VARIABLES; tpcLoader.addEventListener(Event.COMPLETE,onComplete); tpcLoader.load(new URLRequest(filePath)); } private function onComplete(evt:Event):void{ var src:String = evt.target.data; var vars:URLVariables = new URLVariables(src); contents.topics._date.text = vars.date; contents.topics._txt.text = vars.news; } 配列を読み込む手順がどうしても分かりませんでした... さらに上記のような変数・配列混合での読み込みは可能でしょうか。 もし不可能のようでしたら、変数のみのtxtと配列のみのtxtとで分けての出力も可能です。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ActionScript3で複数のXMLを順番に読み込めずに最後のXM

    ActionScript3で複数のXMLを順番に読み込めずに最後のXMLだけ読んでしまいます。 あるサイトからXMLファイルを順番に読み込んで その中のデータを順番に処理する(trace(hoge);で表示する) スクリプトを書いていますが、なぜか最後のlist3.xmlの データだけが表示されてしまいます。 URLが複数だと、list1.xmlとlist2.xmlの部分だけ 以下のエラーが出るのです。 TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 at _fla::MainTimeline/xmlLoad() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/flash.net:URLLoader::onComplete() URLが1つだとエラーがでないので益々意味が分からず 混乱しています。何故か分かる方は教えて欲しいです。 宜しくお願いします。 //■■■■■■■■■■■■■■■スクリプトここから import flash.net.URLLoader; import flash.net.URLRequest; var xmlUrl = new Array(); xmlUrl[0] = "http://hogehoge.com/list1.xml"; xmlUrl[1] = "http://hogehoge.com/list2.xml"; xmlUrl[2] = "http://hogehoge.com/list3.xml"; var rss:XML; var xmlData:URLLoader; for each (var k:String in xmlUrl){ xmlData = new URLLoader(); xmlData.load(new URLRequest(k)); xmlData.addEventListener(Event.COMPLETE,xmlLoad); function xmlLoad(event:Event):void{ rss = new XML(xmlData.data); var hoge ; for (var i:int = 0; i <= 1; i++) { hoge = rss.status[i].text; trace(hoge); } } } //■■■■■■■■■■■■■■■スクリプトここまで

    • ベストアンサー
    • Flash
  • AS3 asファイルでイベントリスナが登録できない

    外部(as)ファイルに以下のようなメソッドを記述していたんですが // ***** エラー行 ***** とコメントアウトしている場所で、『型が見つからないか、コンパイル時定数ではありません。:Event。』というエラーが出てしまいます。 外部ファイルではイベントリスナは登録できないのでしょうか? 良かったら回答の方、よろしくお願いします。 public function jsonRead(){ var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; urlLoader.addEventListener(Event.COMPLETE, jsonReadHandler); urlLoader.load(new URLRequest("json_text.json") ); function jsonReadHandler(e:Event):void{ // ***** エラー行 ***** var json_data:String = URLLoader(e.currentTarget).data; // ターゲットからテキストデータを取得して変数に代入 var json_decode_data:Object = JSON.parse(json_data); // 読み込んだテキストをjsonオブジェクトにデコード this.pages_of_book = Number(json_decode_data[0].number); trace(this.pages_of_book); } // jsonReadHandler() } // jsonRead()

    • ベストアンサー
    • Flash
  • 下記のような関数から外部からの戻り値を返したいのですが

    下記のような関数から外部からの戻り値を返したいのですが 良い方法はございませんでしょうか? 例えば trace( test( "test" ) ); このように戻り値を返す関数にしたいです。 function test( strData:String ):String { var variables:URLVariables = new URLVariables(); variables.data = strData; var request:URLRequest = new URLRequest(); request.url = "http://test.asp"; request.data = variables; request.method = URLRequestMethod.POST; var loader = new URLLoader(); loader.addEventListener(Event.COMPLETE , function(event) { var retValue:String = new String(event.target.data); }); loader.load(request); //return ???? }

    • ベストアンサー
    • Flash
  • as3 変数のスコープについて

    xmlの読み込みをしていますが、 最後のtraceで内容が表示されません。nullになります。 var myXML:XML; var imgSrc:String ; var url:URLRequest = new URLRequest("test.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.dataFormat = URLLoaderDataFormat.TEXT; xmlLoader.load(url); xmlLoader.addEventListener(Event.COMPLETE, comp); function comp(event:Event):void { myXML = XML(xmlLoader.data); imgSrc = myXML.img[0]; } trace(imgSrc);←ここがnullです。 function内でtraceすると問題なく表示されるのですが、 一体どうしてでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう