- ベストアンサー
FLASH8でXMLから読み込んだ画像のパスを表示する方法は?
- FLASH8を使用し、as2.0で制作しています。URLなどは問題なく読み込むのですが、xmlで読み込んだ画像のパスを、loadMovieで表示させるには、どうすればいいですか?
- trace();で出力すると画像へのパスが問題なく表示されるのですが、それをloadMovieに代入してもunderdefineになってしまいます。
- 初心者向けの質問ですが、FLASH8でXMLから読み込んだ画像のパスを正常に表示するには、どのような方法がありますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ronts05さん、 以下で行けるでしょう。 //ここから /*xmlファイル名を、url.xmlとしました <?xml version="1.0" encoding="UTF-8"?> <file> <visual> <gazou>./main/001.jpg</gazou> <thumb>./navi/thumb_001.png</thumb> <url>http://www.yahoo.co.jp/</url> </visual> <visual> <gazou>./main/002.jpg</gazou> <thumb>./navi/thumb_002.png</thumb> <url>http://www.google.co.jp/</url> </visual> <visual> <gazou>./main/003.jpg</gazou> <thumb>./navi/thumb_003.png</thumb> <url>http://okwave.jp/</url> </visual> <visual> <gazou>./main/004.jpg</gazou> <thumb>./navi/thumb_004.png</thumb> <url>./test.html</url> </visual> </file> */ import mx.xpath.XPathAPI;//XpathAPIをimportすると、分かり易いです //以下、各配列生成 this.createEmptyMovieClip("mc",_root.getNextHighestDepth());//最深度に、空のMovieClipを生成しておく var gazouList:Array = new Array(); var thumbList:Array = new Array(); var urlList:Array = new Array(); var _xml:XML = new XML(); _xml.ignoreWhite = true; _xml.onLoad = function(success:Boolean) { if (success) { var rootNode:XML = this.firstChild; gazouList = XPathAPI.selectNodeList(rootNode, "/file/visual/gazou/*"); thumbList = XPathAPI.selectNodeList(rootNode, "/file/visual/thumb/*"); urlList = XPathAPI.selectNodeList(rootNode, "/file/visual/url/*");//ここから、URLを抽出する trace(gazouList.length);//今回は、4となる for (var i:Number = 0; i<gazouList.length; i++) {//検証用 trace(gazouList[i]); trace(thumbList[i]); trace(urlList[i]); } for (var k:Number = 0; k<gazouList.length; k++) { _root["btn"+k].id = k;//別途btn0、btn1、btn2、btn3を配置しておき、kを、XX.idに保存し、 _root["btn"+k].onRelease = function():Void {//其々のボタンが押されたら、 _root.mc.loadMovie(gazouList[this.id]);//_root.mcにロードする。この時、thid.idで配列要素を取り出す }; } /*btn.onRelease = function():Void { makeButton(); };*/ } else { trace("error"); } }; _xml.load("url.xml"); //_xml.load("url.xml?"+getTimer());//ローカルではエラーとなりますが、サーバーアップ時は、ブラウザーのキャッシュ対策として、こっちを使用する、 /*動的に、ボタンを生成する場合は、以下のような例もあり得るでしょう function makeButton() { for (var i:Number = 0; i<gazouList.length; i++) { var btn:MovieClip = this.attachMovie("Btn", "btn"+i, i); btn._x = 40+90*i; btn._y = 400; btn._txt.text = String(i); btn.id = i;//iを、btnに動的に生成するプロパティ id に、保管しておく btn.onRelease = function():Void { //getURL(urlList[this.id], "_blank"); mc.loadMovie(gazouList[this.id]); trace(gazouList[this.id]); }; } } */ //ここまで