Flashで外部XMLを読み込んでリンク集を制作する方法

このQ&Aのポイント
  • Flashで外部XMLを読み込んでリンク集を作成する方法について説明します。
  • 必要なコードと手順を紹介し、リンクの表示とURLへのリンクを実現する方法を解説します。
  • また、XMLに複数行が入っている場合でも、表示する方法をご説明します。
回答を見る
  • ベストアンサー

actionscript3.0、XMLのリンク集

actionscript3.0、XMLのリンク集 Flash、XMLともに初心者です。 Flashに外部XMLを読み込んで、更新のしやすいリンク集を制作したいと思います。 調べながら作っているのですが行き詰っております。。 やりたい事としては、 「swf内のテキストエリアに外部から読み込んだXMLを表示させリンクを張る」です。 例として ■A社 http://www.○○○.com ■B社 http://www.△△△.com ■C社 http://www.□□□.com のようなものです。 「■A社」の部分までは表示させることができたのですが、 その後URLを表示させリンクを張るという処理のしかたが分かりません。 あとなぜかXMLには複数行入っているのですがswfには1行目しか表示されません。。 制作したXMLとactionscriptは下記のようなものです。 <?xml version="1.0" encoding="utf-8"?> <data> <list name="■A社" /><url>http://www.○○○.com</url> <list name="■B社" /><url>http://www.△△△.com</url> <list name="■C社" /><url>http://www.□□□.com</url> </data> var xmlURL:URLRequest = new URLRequest("link.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(xmlURL); var myXML:XML = new XML(); xmlLoader.addEventListener(Event.COMPLETE, xmlLoadStart); function xmlLoadStart(e:Event):void { myXML = XML(xmlLoader.data); trace(); link_txt.text = myXML.list[0].@name; } 環境はWin XP、Flash CS3、as3、flash player9です。 何卒お願い致します。

  • usk99
  • お礼率68% (15/22)
  • Flash
  • 回答数2
  • ありがとう数20

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1 です。 > このURLにリンクを張るにはどうしたらよいのでしょうか? 知りませんよ,そんなことは。。。 例えば 何かのボタンにリンクを貼りたい場合はボタンを用意してインスタンス名(または変数名)を付けておいて, 「そのボタンクリック時に何某かのページを表示させる」 というプログラムを組まなければなりませんし, またたとえば 複数のテキストフィールドを用意して各々テキストフィールド選択時にどこかのページにジャンプさせたいのでしたらそのようにプログラムを組まなければなりませんし…。 その辺のこと(プログラミング以前の問題)について何にも書かれていないのですから, 何をどうすれば良いなど書けるわけないでしょう? #1に書いた通りでとりあえず表示出来ているのでしたら, コードを次のように変えてみられてはいかがでしょうか? これも1つの方法です。 ------------------------------------------------------ var xmlURL:URLRequest = new URLRequest("link.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(xmlURL); var myXML:XML = new XML(); xmlLoader.addEventListener(Event.COMPLETE, xmlLoadStart); function xmlLoadStart(e:Event):void { myXML = XML(xmlLoader.data); var str:String = ""; for (var i:int=0; i<=2; i++) { str += "<u><font color='#0000FF'><a href='" + myXML.url[i] + "'>" + myXML.list[i]. @ name + "</a></font></u><br>"; } link_txt.htmlText=str; } ------------------------------------------------------   

usk99
質問者

お礼

ありがとうございました! リンクを貼ることができました。 感謝いたします。

usk99
質問者

補足

すみません説明不足でした。。 swf内にテキストフィールドを一つ用意します。 その中に下記のような外部XMLから読み込んだテキストを表示させます。 ■A社 http://www.○○○.com ■B社 http://www.△△△.com ■C社 http://www.□□□.com このテキストのURL「http://www.○○○.com」の部分をクリックして同じURLで外部リンクをはりたいと思っております。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「link_txt」 という名のテキストフィールドを 『複数行』設定にして高さも大きめにしていた場合, 次のようにすれば表示できると思いますが。。。 -------------------------------------------------- var xmlURL:URLRequest = new URLRequest("link.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(xmlURL); var myXML:XML = new XML(); xmlLoader.addEventListener(Event.COMPLETE, xmlLoadStart); function xmlLoadStart(e:Event):void { myXML = XML(xmlLoader.data); link_txt.text = myXML.list[0]. @ name; link_txt.appendText("\n"); //←単なる改行 link_txt.appendText(myXML.url[0]); link_txt.appendText("\n"); link_txt.appendText(myXML.list[1]. @ name); link_txt.appendText("\n"); link_txt.appendText(myXML.url[1]); link_txt.appendText("\n"); link_txt.appendText(myXML.list[2]. @ name); link_txt.appendText("\n"); link_txt.appendText(myXML.url[2]); } -------------------------------------------------  

usk99
質問者

補足

回答ありがとうございます! 失礼しました、、「単一行」設定になっていました(汗) テキストは表示できたのですがこのURLにリンクを張るにはどうしたらよいのでしょうか?

関連するQ&A

  • 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 変数のスコープについて

    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
  • PEAR XML_Query2XMLを利用したPHPからFlash(AS3)へのXMLデータの渡し方について。

    毎度お世話になっております。 前回させていただいた質問で、PHPからFlashへのデータ受け渡しをしたいと考えていたところ、XML形式がいいと教えていただき、試していました。 FlashのただのXMLファイルの読み込みはでき、PHPのPEAR XML_Query2XMLを利用してデータベースのデータをXMLに整形することも出来ました。 しかし、その後の連結的な操作が分からず戸惑っております。 お時間があるときでよろしいので、何を使ったらよいかなどアドバイス等を頂ければと思います。 よろしくお願いします。 環境 Flash CS3(AS3) PHP5.2.6 MySQL5.1.29 Apache2.2.10 ・PHPの今のところのプログラム <?php // include required files include 'XML/Query2XML.php'; include 'MDB2.php'; try { // initialize Query2XML object $q2x = XML_Query2XML::factory(MDB2::factory('mysql://ユーザ名:パスワード@localhost/データベース名')); // generate SQL query // get results as XML $sql = "SELECT * FROM table名"; $xml = $q2x->getFlatXML($sql); // send output to browser header('Content-Type: text/xml'); $xml->formatOutput = true; echo $xml->saveXML(); } catch (Exception $e) { echo $e->getMessage(); } ?> ・AS3の今のところのプログラム System.useCodePage = true; // 外部XMLはURLLoaderで読み込む var myLoader:URLLoader = new URLLoader(); myLoader.addEventListener(Event.COMPLETE, completeData); myLoader.load(new URLRequest("test.xml")); // 読み込み完了後の処理 function completeData(event:Event):void { // 読み込んだ文字列をmyXMLに入れる var myXML:XML = new XML(myLoader.data); // データのnameとpriceの値をリストアップ表示 trace(myXML.drink[1].name); for (var i = 0; i < myXML.drink.length(); i++) {; //ダイナミックテキストでi番目を表示 db.text = myXML.drink[i].name trace(myXML.drink[i].name); trace(myXML.drink[i].@price); } } よろしくお願いします^^

    • ベストアンサー
    • PHP
  • actionscript 3.0 の外部リンク

    初めて質問させていただきます。 Flash CS3 のactionscript3.0にて、サイト内リンクのボタンを作成したのですが、 フラッシュを読み込んだ時点で、インスタンスthe URL4がポップアップで開いてきてしまいます。 そのような記述をしていないのでどうしたら良いか分からず… 何かお知恵をお貸しいただけると幸いです。 よろしくお願い致します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ↓実際に書いたacitonscriptです。URLはダミーです。 //theURL1という変数に代入し、URLRequestのインスタンスを生成 var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL1); navigateToURL(theURL2); navigateToURL(theURL3); navigateToURL(theURL4); // イベントリスナーの登録 A_btn.addEventListener(MouseEvent.CLICK,gotoURL1); B_btn.addEventListener(MouseEvent.CLICK,gotoURL2); C_btn.addEventListener(MouseEvent.CLICK,gotoURL3); D_btn.addEventListener(MouseEvent.CLICK,gotoURL4); // URL1へジャンプする function gotoURL1(event:MouseEvent):void { var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); navigateToURL(theURL1,"_self"); } // URL2へジャンプする function gotoURL2(event:MouseEvent):void { var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); navigateToURL(theURL2,"_self"); } // URL3へジャンプする function gotoURL3(event:MouseEvent):void { var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); navigateToURL(theURL3,"_self"); } // URL4へジャンプする function gotoURL4(event:MouseEvent):void { var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL4,"_self"); }

  • xmlから配列で取得したものを取り出したい

    as3初心者jpncan15といいます。 xmlから配列で取得したものをfunction外で取り出したいのですがどのようにすればいいのか悩んでいます。functionを調べたり配列を調べたり頭がかなり混乱中です。 お手数ですがご教授いただけますでしょうか? var ary:Array=new Array(); var ary_name:Array=new Array(); var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("b.xml"); var xml:XML; loader.load(request); loader.addEventListener(Event.COMPLETE , XMLload); function XMLload(e:Event):void { xml = XML(e.target.data); num_txt.text = xml.item.length(); //xml件数をテキストフィールドへ入れる for each(var element:Object in xml.item.thumb) //配列に入れる {ary.push(element);} for each(var element_name:Object in xml.item.name) //配列に入れる {ary_name.push(element_name); trace(element_name);}//出力OK } //function外で配列を使用したい trace(ary[5]); trace(ary_name[2]);

    • ベストアンサー
    • Flash
  • actionscriptでの複数リンク

    こんにちは、いまフラッシュでサイトのトップページをつくっています。 ボタンを複数表示して、それぞれ同窓でリンクするようにしたいです。 ボタンを押して複数表示するようにはなったのですが、なぜかどのボタンを押しても同じリンク先に飛んでしまいます。URLは変えましたが、超初心者で関数のことなどがよくわかっていないため、ご教授いただけたらと思います。 一つめのボタンのアクションへの記述 click_btn.addEventListener(MouseEvent.CLICK,onHomeClick) function onHomeClick(e:MouseEvent):void { trace(e.type) var url:String="http://サイト1"; var urlrequest:URLRequest=new URLRequest(url); navigateToURL(urlrequest, "_self"); } 二つ目のボタンへの記述 click_btn2.addEventListener(MouseEvent.CLICK,onHomeClick) function onHomeClick2(e:MouseEvent):void { trace(e.type) var url:String="http://サイト2"; var urlrequest:URLRequest=new URLRequest(url); navigateToURL(urlrequest, "_self"); } 調べてコピペしたものが主です。初歩的な質問で申し訳ないのですが、よろしく御願いいたします。

  • XMLでFlashの変数を管理できませんか?

    XMLでFlashの変数を管理できませんか? ただいまFlashの変数(例えば、リンク先、読込む画像のURLや変数の数値など)をXMLで管理できたらいいなぁと思いサンプルを作成したのですがXMLに記述したテキストを変数に代入するとこまではできたのですが、その変数をFlash内で自由に扱えません。 どうしたらよいでしょうか?作成環境はActionScript3、Flash CS4です。 ■XML:var_xml.xml内は以下のように記述しています。 <?xml version="1.0" encoding="UTF-8"?> <move>  <id ex="Slow Speed" speed="1" />  <id ex="Normal Speed" speed="3" />  <id ex="Fast Speed" speed="5" />  <id ex="Very Fast Speed" speed="8" /> </move> ■Flash(w:700xh:100)内は ルートの1フレーム目に stop(); XML.ignoreComments=true; XML.ignoreWhitespace=true; XML.ignoreProcessingInstructions=true; var myRequest:URLRequest=new URLRequest("./var_xml.xml"); var myLoader:URLLoader=new URLLoader(); myLoader.load(myRequest); myLoader.addEventListener(Event.COMPLETE, xSetText); function xSetText(eventObject:Event):void { var varXML:XML=XML(myLoader.data); var speed:int=int(varXML.id[2].@speed);←ここで変数作る gotoAndPlay(2); } ルートの2フレーム目はStop();を記述して ステージにはMovieClip(BaseMC)が1個置いてあります。そのMovieClip(BaseMC)の1フレーム目には以下のようにASを記述しています。 var MC:MovieClip = new moveMC();←適当な図形が一つ置いてあるMC MC.x=0; MC.y=5; addChild(MC); addEventListener(Event.ENTER_FRAME, MoveFunc); function MoveFunc(event:Event):void { MC.x+=speed;←ここにさっきのXMLから引っ張って代入した変数を使いたい if (MC.x>700) { MC.x=0; } } 上記のようなFlashを作成したのですが、エラーがでてしまいます。もしこんな感じでXMLを利用して変数を管理できたら便利だと思うのですが、できるのでしょうか? 検索してもギャラリーをXMLで管理するとかでるのですが、XMLの読込完了に実行される関数内で変数にURLを代入とかtrace(~);で出力してとか、知りたい情報が手に入らないのでどなたか教えていただけませんか?お願いします。

    • ベストアンサー
    • 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
  • AS3.0で取得した外部XMLの文字の一部に色付け

    Flash professional CS5を使用してAS3.0で記述しています。 外部XMLに文章が入っており,それを作成したテキストフィールドに入れます。 そして,その文章の一部の必要なところだけ文字の色を変えたいと考えています。 テキストボックスや文章を細切れにするのは大変だと思うのですがなにかやり方があるのでしょうか? プロパティインスペクタで細かい設定もできないですし; 例文として ・彼は何万人もの参加者から選ばれた というものを使うとします。 ここで 彼は何万人もの<sentence style="color:#0000FF;">参加者</sentence>から選ばれた のようにしてもflash(AS3.0)ではこの色のタグなどは識別不可能なのでしょうか? (stringなので単に文字列として認識されないとか。。) XML用のスクリプトはこのように記述しました。 var loader:URLLoader = new URLLoader(); var urlReq:URLRequest = new URLRequest("sample.xml"); loader.load(urlReq); loader.addEventListener(Event.COMPLETE, onLoaded); function onLoaded(eventObj:Event):void{ var item:XML; var xmlObj:XML = new XML(loader.data); var wordList:XMLList = xmlObj.sentence; item = wordList[0]; test_txt.text = item.text(); } よろしくお願いいたします。

  • 外部SWF内で設定したリンクが効かない

    本体SWFに、「外部SWFのファイル名」と「リンク先」が書かれたXMLを読込んでいます。 本体SWFで外部SWFを表示させ、そのSWFにリンク(A)を設定しています。 (図の様な感じです) このリンク(A)は効くのですが、外部SWFにはファイル自体にリンク(B)を設定しているのですが、このリンク(B)が効かないので、困っています。 ActionScriptは3で書いています。 【外部SWFに書いたリンクの設定】は、 btn.addEventListener(MouseEvent.CLICK,clickHandler); function clickHandler(e):void { var url:URLRequest = new URLRequest("http://goo.ne.jp/"); navigateToURL( url, "_blank"); } ..................です。 ActionScript2で、on(release)で書いたものを 読込んだ場合はちゃんとリンクしたのですが、 どのようにしたらよいのでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう