• 締切済み

FlashとXMLとの連動

初心者ですがよろしくお願いします。 FlashとXMLとを連動させたフォトギャラリーを作成していますが うまく読み込みできずnullになります。 Flash内の機能としては、 ・自動スライド機能 ・画像をクリックするとXML内のURLへジャンプ を入れたいと思ってます。 下記内容を御覧頂きご指摘お願いします。 XML内 <Slides>  <slide>  <jpegURL>images/image1.jpg</jpegURL>   <product_name>名前</product_name>   <product_url>URL</product_url>  </slide>  <slide>  <jpegURL>images/image2.jpg</jpegURL>   <product_name>名前2</product_name>   <product_url>URL2</product_url>  </slide> </Slides> Flash内ActipnScript slides_xml = new XML(); slides_xml.onLoad = startSlideShow; slides_xml.load("slides.xml"); slides_xml.ignoreWhite = true; //自動スライドを定義 function nextSlideload(){ nextSlideNode = currentSlideNode.nextSibling; if (nextSlideNode == null) { break; } else { currentIndex++; updateSlide(nextSlideNode); currentSlideNode = nextSlideNode; } } // Show the first slide and intialize variables function startSlideShow(success) { if (success == true) { rootNode = slides_xml.firstChild; totalSlides = rootNode.childNodes.length; firstSlideNode = rootNode.firstChild; currentSlideNode = firstSlideNode; currentIndex = 1; updateSlide(firstSlideNode); setInterval(nextSlideload,3500) } } function nextSlideload(){ nextSlideNode = currentSlideNode.nextSibling; if (nextSlideNode == null) { break; } else { currentIndex++; updateSlide(nextSlideNode); currentSlideNode = nextSlideNode; } }; // Updates the current slide with new image and text function updateSlide(newSlideNode) { imagePath = newSlideNode.attributes.jpegURL; slideText = newSlideNode.firstChild.nodeValue; loadMovie(imagePath, targetClip); } // Event handler for 'Next slide' button next_btn.onRelease = function() { nextSlideNode = currentSlideNode.nextSibling; if (nextSlideNode == null) { break; } else { currentIndex++; updateSlide(nextSlideNode); currentSlideNode = nextSlideNode; } }; // Event handler for 'Previous slide' button back_btn.onRelease = function() { previousSlideNode = currentSlideNode.previousSibling; if (previousSlideNode == null) { break; } else { currentIndex--; currentSlideNode = previousSlideNode; updateSlide(previousSlideNode); } };

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

みんなの回答

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

XML の文字コードの問題・画像のパスの問題・ターゲットパスの誤りなど、外部ファイルが読み込めない理由にはいろいろな原因が考えられますが。 とりあえず、ファイルを読み込むこと自体には特に問題がないものとし、XML を解析する部分に限定します。 ざっと試してみただけなのですが、updateSlide 関数の中で画像のパスやテキストを取得する部分を (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  //<slide>ノード内の子ノードの値を取得  imagePath = newSlideNode.childNodes[ 0 ].firstChild.nodeValue;  slideText = newSlideNode.childNodes[ 1 ].firstChild.nodeValue;  linkURL = newSlideNode.childNodes[ 2 ].firstChild.nodeValue; このように書き換えてみてください。 変数 imagePath に画像のパス、slideText にテキスト、linkURL に URL が入ります。 trace アクションで各変数の中身を確認してみて、XML で指定した通りの値が表示されれば、XML の読み込みおよび解析して必要な情報を取り出す処理は成功していると言えます。 ---------------------------------------------------------- ActionScript の XML オブジェクトの中には、解析した XML の情報そのものの他に、子の数・最初 / 次 / 最後の子といった、別のノードや関連するノードを参照するための手がかりもたくさん記録されます。 子のノードの情報は内部では配列変数で入っていますから、childNodes[ 0 ] というように配列変数で直接参照できますが、firstNode (最初の子ノード) や nextSibling (次の子ノード)といった相対的な表現で参照する方法もあります。 相対的な表現でノードを参照する場合は特に、どのノードを指しているのかをしっかり辿っていかないと、解析するノードを見失ってしまいます。 ご提示のスクリプトで、どの変数がどのノードを指しているのかを順番に辿りながら、画像を読み込む部分のスクリプトを解析してみましょう。 XML が読み込まれた時、startSlideShow 関数が呼び出されます。 この中で、各変数に次の通りのノードが設定されます。  ・ rootNode   slides_xml の firstChild (最初の子ノード)。   つまり、取得した XML の最も外側のタグで囲まれている <Slides> ノードです。  ・ firstSlideNode   <Slides> には、<slide> ~ </slide> で囲まれた子ノードが2つあります。   rootNode は <Slides> ノードで、これの最初の子ノード、つまり1番目の <slide> ノードのことです。  ・ currentSlideNode   startSlideShow 関数の中では、単に firstSlideNode の複製にすぎません。   しかし、この変数の本来の役目は、各スライドに必要な情報をまとめている <slide> ノードを次々に参照していくことです。   1枚目のスライドの情報があるノードを、との意味で初期値として firstSlideNode の値がコピーされていますが、   スライドが進むと次の <slide> ノードを指すようになります。 nextSibling で自分と同じ階層に並んでいる次の子ノード、previousSibling で前の子ノードを参照できます。 変数 currentSlideNode は <slide> ノードの階層を指しており、ノードを移動するスクリプトでは <slide> と同じ並びのノードに移動します。 従って、currentSlideNode.nextSibling と currentSlideNode. previousSibling で、前後のスライドの情報( <slide> ノード)を取得できます。 <slide> ノードに更に子ノードが増えるなど <slide> ノードの下の階層の構成が変わったとしても、” <Slides> ノードの下に <slide> ノードがいくつか並んでいる”という関係さえ変わらなければ、currentSlideNode の nextSibling や previousSibling による <slide> ノード間の移動はそのまま利用できます。 前後のスライドに移動するボタンのスクリプトは検証しておりませんが、見たところ <slide> ノード単位で参照するノードを変化させるスクリプトと思われるので、今回は特に変更する必要はないかと思います。 ***************************** 今回の肝は updateSlide 関数です。 updateSlide 関数は、1件の <slide> ノードの情報を受け取り、このノードを解析してスライドに必要な情報を取り出し、取り出した画像のパスから画像を読み込む関数と思われます。 ご提示のスクリプトですと、この関数の中では  ・変数 imagePath に、引数で渡されてきたノードの持つ” jpegURL ”属性の値  ・変数 slideText に、引数で渡されたノードの値 を格納するようになっています。 つまり、この関数の設計では、XML の記述が  <Slides>   <slide jpegURL="image1.jpg">名前1</slide>   <slide jpegURL="image2.jpg">名前2</slide>    :  </Slides> このような構成になっていないと、スライドに使う画像のパスとテキストを正確に取得できません。 画像のパスとテキスト・・・と2種類だけならこれでもいいのですが、今回はもう1つ、クリックした時に開く URL の情報を増やしたいのです。 <slide> ノードに更に子ノードを設けて分かりやすく記述できるのが、XML の特長です。 ただ、<slide> ノードに子ノードを増やすと、このスクリプトで想定している XML と構成が変わってしまいますから、このままでは使えません。 <slide> ノードまでの構成は変わらないので、変更する箇所は updateSlide 関数の中で <slide> ノードの子ノードを解析する部分、ということになります。 updateSlide 関数の解析部分を、ご質問文にある通りの  <Slides>   <slide>    <jpegURL>image1.jpg</jpegURL>    <product_name>名前1</product_name>    <product_url>URL1</product_url>   </slide>   <slide>    :   </slide>  </Slide> という構成の XML を解析できるように変更してみましょう。 この XML では、各 <slide> ノードに3つの子ノードがあります。 imagePath 等の変数に値を格納する都合もあって、 nextSibling などの相対的な表現で子ノードを辿っていくよりも、配列変数で直接子ノードを参照した方が簡単だと思います。 各子ノードは、<jpegURL> = <slide> ノードの最初(0番目)の子( childNodes[ 0 ] )、<product_name> =1番目の子( childNodes[ 1 ] )、<product_url> =2番目の子 ( childNodes[ 2 ] ) で参照できます。 ActionScript の XML では、タグで囲まれている値も1つの子ノードとして考えます。 この例ですと、例えば <jpegURL> タグで囲まれている値を取得する時は” <jpegURL> ノードの最初の子”が持っている値( nodeValue )となります。 普通に考えると、<jpegURL> ノードの nodeValue が image1.jpg なのでは?という気がしますが、ActionScript では”ノードの最初の子”の nodeValue で取得しますので、ご注意ください。 updateSlide 関数では、<slide> ノードまでの参照が引数で渡されてくると想定されています。 <slide> ノードの下の階層の構成が、元のスクリプトで想定しているものと変わりましたが、<slide> ノードまでの関係は変わっていませんので、この引数はそのまま使用できます。 まとめますと、updateSlide 関数の中では、仮引数を利用して  <jpegURL> の値 = newSlideNode.childNodes[ 0 ].firstChild.nodeValue;  <product_name> の値 = newSlideNode.childNodes[ 1 ].firstChild.nodeValue;  <product_url> の値 = newSlideNode.childNodes[ 2 ].firstChild.nodeValue; で、<slide> ノードの3つの子ノードの値を取得することができます。 ***************************** XML は階層を自由に記述できる言語です。 しかし、それゆえに、階層の構成を変えた時には解析するスクリプトも合わせて変えなければならないという、厄介な面もあります。 XML を使うスクリプトは、後で子ノードを付け足したり削除するなど、XML で記述する階層の構成を変えてしまうと、役に立たなくなることがあります。 ちなみに、デバッガという機能を使うと、XML オブジェクトの内容をツリー形式で見ることができます。 機会がありましたら利用してみてください。

zakey_1983
質問者

お礼

ご指摘いただきありがとうございました。 アップデート時のスクリプトを変更したところ XMLデータを読み込みできました。 ありがとうございました。

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

ムービーの構造がどうなっているかわからないもののスクリプトを, そんなにゴチャゴチャ書かれても,何がどうなっているのかわかりませんよ。 まず,XML ですが。 それは質問用に用意された XML ですか? それとも元がそうなっているのですか? インデントの全角空白文字や,変な所に入っている全角空白文字は全て削除してください。 ---「slides.xml」----------------------------- <Slides> <slide> <jpegURL>images/image1.jpg</jpegURL> <product_name>名前</product_name> <product_url>URL</product_url> </slide> <slide> <jpegURL>images/image2.jpg</jpegURL> <product_name>名前2</product_name> <product_url>URL2</product_url> </slide> </Slides> ------------------------------------------ この 「slides.xml」 ですが, 文字コードを UTF-8 で保存していますか? もししていなければ UTF-8 で保存してください。 次に ActionScript の方ですが, もっとシンプルにしないとどこに問題があるかわからないでしょう。 あと, ちゃんと読み込まれたかどうかとか, 変数の値はどうなっているかとかは, trace(); で調べてみれば良いのですよ。 特に XML のノードや属性は掴みにくい物です。 XML の場合は trace(); を無茶苦茶に入れればなんとかなるものです。 Flash で新規ドキュメントを作成し, XML が保存してあるフォルダに任意の名前で保存し, フレーム1 に次のスクリプトをコピペして, 「制御」→「ムービープレビュー」してみてください。 うまくロードされれば色々見える物が見えてくると思います。 --------------------------------------------------- slides_xml = new XML(); slides_xml.onLoad = startSlideShow; slides_xml.load("slides.xml"); slides_xml.ignoreWhite = true; function startSlideShow(success) { if (success == true) { rootNode = slides_xml.firstChild; totalSlides = rootNode.childNodes.length; trace("totalSlides = "+totalSlides); trace("------------------------------------"); firstSlideNode = rootNode.firstChild; trace("firstSlideNode = "+firstSlideNode); trace("------------------------------------"); trace(rootNode.childNodes[0].childNodes[0]); trace("------------------------------------"); trace(rootNode.childNodes[0].childNodes[0].firstChild.nodeValue); trace(rootNode.childNodes[0].childNodes[1].firstChild.nodeValue); trace(rootNode.childNodes[0].childNodes[2].firstChild.nodeValue); trace(rootNode.childNodes[1].childNodes[0].firstChild.nodeValue); trace(rootNode.childNodes[1].childNodes[1].firstChild.nodeValue); trace(rootNode.childNodes[1].childNodes[2].firstChild.nodeValue); } } --------------------------------------------------- 上のようにして得られたものを参考にして, 色々動作させながら作成していけばできるのではないでしょうか。

zakey_1983
質問者

お礼

初めて質問するもので迷ってしまいすべて書いてしまいました。 すいませんでした。ぜひ試してみます。 ありがとうございました。

関連するQ&A

  • xmlから取得したurlをflash内で設定

    flash内に設置した複数のボタンに外部xmlから取得したurlを設定したいです。 検索したり過去の質問も見てましたが、いまいちわかりませんでしたのでご教授頂けたらと思います。 現在は↓のようになっています。 これですと1つしか読み込めないので、複数設定してそれぞれのリンクを設定したいと思っています。 わかる方いらっしゃいましたら何卒よろしくお願い致します。 xmlのソース(url.xml) <?xml version="1.0" encoding="UTF-8"?> <top> <menu> <title>url</title> <url>http://www.google.co.jp/</url> </menu> </top> FLASH内のスクリプト(フレーム) function startIndexMenu(success) { if (success == true) { rootNode = index_xml.firstChild; firstMenuNode = rootNode.firstChild; childMenuNode = firstMenuNode.firstChild; updateMenu(childMenuNode); } // end if } // End of the function function updateMenu(newMenuNode) { slideText = newMenuNode.firstChild.nodeValue; slideText_op = newMenuNode.nextSibling; urlNode = slideText_op.firstChild.nodeValue; nextMenuNode2 = firstMenuNode.nextSibling; slideText2 = nextMenuNode2.firstChild.nodeValue; nextMenuNode3 = nextMenuNode2.nextSibling; slideText3 = nextMenuNode3.firstChild.nodeValue; } // End of the function index_xml = new XML(); index_xml.onLoad = startIndexMenu; index_xml.load("url.xml"); index_xml.ignoreWhite = true; ボタンに設定してるスクリプト on (release) { getURL(_root.urlNode, ""); }

    • ベストアンサー
    • Flash
  • XML読み込みのテキストが表示されません

    FLASHで簡単な写真のスライドショーを作っています。 いろいろな例を参考に下記の段階まで作業を進めましたが、イメージは表示されたものの、どうしてもXMLからのテキストが読み込めず困っています。いろいろと調べてはみましたが、初心者ゆえ一人では解決できそうにありません。どなたか目を通して間違いを指摘していただけませんでしょうか?よろしくお願いします。 XMLファイルの記述: <?xml version="1.0" encoding="UTF-8"?> <Slides> <slideNode jpegURL="photos/photo1.jpg">#1 ABCDE</slideNode> <slideNode jpegURL="photos/photo2.jpg">#2 ABCDE</slideNode> <slideNode jpegURL="photos/photo3.jpg">#3 ABCDE</slideNode> </Slides> </xml> ActionScriptの記述: myXML.load("path_to_xml/data.xml"); var slides_xml = new XML(); slides_xml.load("slides.xml"); slides_xml.ignoreWhite = true; slides_xml.onLoad = startSlideShow; function startSlideShow(success) { if (success == true) { rootNode = slides_xml.firstChild; totalSlides = rootNode.childNodes.length; firstSlideNode = rootNode.firstChild; currentSlideNode = firstSlideNode; currentIndex = 1; updateSlide(firstSlideNode); } } function updateSlide(newSlideNode) { imagePath = newSlideNode.attributes.jpegURL; slideText = newSlideNode.firstChild.nodeValue; loadMovie(imagePath, targetClip); }

  • XMLを利用したFLASH画像ギャラリーでローディングさせたい

    環境:FLASH8 XMLを利用したFLASH画像ギャラリー(スライドショー)を 制作しています。 スクリプトはあるFLASHの勉強サイトを参考にさせていただきました。 機能としては、スライドショーが自動再生から始まり アルファのフェードが入りながら画像の数だけループして、 自動再生の一時停止、次ボタンと戻るボタンでスライド内を 移動できるようになっています。 ここまではいいのですが、回線が遅い環境でみると 6枚目くらいから、画像の読み込みがついてこれなくなって 枚数カウントだけが進み、画像が黒のまま表示されなく なってしまいます。 改善したいポイントとしては、 最初の段階でローディング画面(前処理)を設けて、ある程度 読み込みが完了した時点で自動スライド開始としたいと 思っています。 もしくは、全て画像を読み込み終えてからスライド開始。 これでメモリ不足や回線スピード不足が解消されれば 今回の問題はクリアでるのではないかと考えています。 画像は50枚前後の少し大きめの画像を使用しています。 どうか、お知恵を貸していだだければと思います。 ★使用スクリプト photos_xml = new XML(); photos_xml.load("photo.xml"); photos_xml.ignoreWhite = true; photos_xml.onLoad = SlideShow; function SlideShow(success) { if (success) { rootNode = photos_xml.firstChild; Slides_num = rootNode.childNodes.length; first_Slide = rootNode.firstChild; last_Slide = rootNode.lastChild; currentSlide = first_Slide; currentNo = 1; passSlide(first_Slide); ID = setInterval(autoExchange, 5000); } } function passSlide(newSlide) { image = newSlide.attributes.image; imageWidth = newSlide.attributes.p_width; imageHeight = newSlide.attributes.p_height; slideTitle = newSlide.firstChild.nodeValue; screen._alpha = 0; delay = getTimer(); _root.onEnterFrame = function() { if (getTimer()>delay+200) { screen._alpha += (100-screen._alpha)/30; screen._width = imageWidth; screen._height = imageHeight; screen._x = 305-imageWidth/2; screen._y = 220-imageHeight/2; } frame._x += (305-imageWidth/2-frame._x)/3; frame._y += (220-imageHeight/2-frame._y)/3; frame._width += 2+(imageWidth-frame._width)/3; frame._height += 2+(imageHeight-frame._height)/3; }; loadMovie(image, screen); } function autoExchange(nextSlide) { nextSlide = currentSlide.nextSibling; if (nextSlide == null) { passSlide(first_Slide); currentSlide = first_Slide; currentNo = 1; } else { currentNo++; passSlide(nextSlide); currentSlide = nextSlide; } } auto_on.onRelease = function() { ID = setInterval(autoExchange, 4000); mx.behaviors.DepthControl.sendBackward(this); }; auto_off.onRelease = function() { clearInterval(ID); mx.behaviors.DepthControl.sendBackward(this); }; next_btn.onRelease = function() { nextSlide = currentSlide.nextSibling; if (nextSlide == null) { passSlide(first_Slide); currentSlide = first_Slide; currentNo = 1; } else { currentNo++; passSlide(nextSlide); currentSlide = nextSlide; } }; back_btn.onRelease = function() { previousSlide = currentSlide.previousSibling; if (previousSlide == null) { passSlide(last_Slide); currentSlide = last_Slide; currentNo = Slides_num; } else { currentNo--; passSlide(previousSlide); currentSlide = previousSlide; } };

    • ベストアンサー
    • Flash
  • FLASHでXMLを読み込んだときに読み込むまでにundefindがでてしまいます。

    flashで外部のxmlを読み込んでいるのですが、読み込むまでの間にテキストフィールド(v_title)にundefindがでてしまいます。原因がわかりません(><)どなたかぜひ教えてくださいませ。 myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("blog/photodata.xml"); v_titleArray = new Array (); v_xOffset = myBase._x; myXML.onLoad = function (loaded) { if (loaded) { v_rootNode = myXML.firstChild; v_num = v_rootNode.childNodes.length; v_currentPhoto = v_rootNode.firstChild; v_currentNumber = 0; for (i=0; i < v_num; i++) { v_loadURL = v_currentPhoto.childNodes[1].firstChild; v_titleArray.push (v_currentPhoto.childNodes[0].firstChild); v_currentPhoto = v_currentPhoto.nextSibling; f_makeAndLoad (i, v_loadURL); } } else { trace ("error occured"); } }; function f_makeAndLoad (num, path) { myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1); v_name = eval("myBase.myLoad"+num); v_name._x = 156 * num; v_name._y = 0; v_name.loadMovie (path); myBase.myLoad._visible = false; } myNext.onRelease = function () { _parent._parent._parent.sound1.start(); if (v_currentNumber < v_num-1) { v_currentNumber+=1; }else{ _parent.nextFrame(); } }; myBase.onEnterFrame = function () { this._x += ((-156*v_currentNumber + v_xOffset)-this._x) ; v_title = (unescape(v_titleArray[v_currentNumber])); };

    • ベストアンサー
    • Flash
  • 外部XMLを使ってFLASHに値を送りたい

    下記のアクションスクリプトは外部XMLより色の値をFLASHに送るものです。 タイトル、コメント、フォントサイズや種類の指定を追加するにはどうすればよいのでしょうか? 宜しくお願いします。 System.useCodepage = true; my_xml = new XML(); my_xml.load("style.xml"); my_xml.ignoreWhite = true; my_xml.onLoad = function(success) { if (success == true) { rootNode = my_xml.firstChild; AValue = rootNode.firstChild.nodeValue; AValue = AValue.substr(1, 6); updatebgcolor(AValue); colorNode = rootNode.nextSibling; $BValue = colorNode.firstChild.nodeValue; $BValue = $BValue.substr(1, 6); updatebgcolor2($BValue); } }; updatebgcolor = function (AValue) { colorObj = new Color(bg_mc); colorObj.setRGB("0x"+AValue); }; updatebgcolor2 = function ($BValue) { colorBObj = new Color(bg2_mc); colorBObj.setRGB("0x"+$BValue); };

  • xmlから作ったサムネールを移動させる

    こんにちは。 flashを勉強中です。XMLからサムネールの一覧を作ろうとして、 なんとかステージに配置するのはできたのですが、サムネールの 数が多いので、マウスの位置によって垂直に移動させる様なことを したいのですが、どうして動かせばよいのかがわからずに困って おります。 アクションスクリプトは以下の様にしております。 このサムネールをMCに埋め込む方法だけでもお教え頂ければ 幸いです。よろしくお願いします。 ----------------------------------------------- myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("data.xml"); myXML.onLoad = function (loaded) {    if (loaded) {      v_rootNode = myXML.firstChild;      v_num = v_rootNode.childNodes.length;      _root.total = v_num;      v_currentPhoto = v_rootNode.firstChild;      v_currentNumber = 0;       for (i=0; i < v_num; i++) {        duplicateMovieClip (icon , "mc_icon"+i, i+1);        path = v_currentPhoto.childNodes[1].firstChild;         _root["mc_icon"+i]._x = 30;         _root["mc_icon"+i]._y = 65 * i + 30;         _root["mc_icon"+i].picture.LoadMovie(path);         _root["mc_icon"+i].title = v_currentPhoto.childNodes[0].firstChild;        v_currentPhoto = v_currentPhoto.nextSibling;        }     } else {      trace ("error occured");   } };

    • ベストアンサー
    • Flash
  • XMLから読み込んだデータを数値に変換する方法

    こんにちは。 XMLからデータを読み取ってそのpositionの値を元に 画像を動かそうとしています。 ただ、読み込んだ数値が文字と判断されていて、 numberで変換しても、数値にならずに、動かすことが できません。 申し訳ありませんが、お教え頂ければ幸いです。 よろしくお願いします。 -----script------------------------------------------- myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("data.xml"); v_positionxArray = new Array (); v_positionyArray = new Array (); myXML.onLoad = function (loaded) { if (loaded) { v_rootNode = myXML.firstChild; v_num = v_rootNode.childNodes.length; v_currentPhoto = v_rootNode.firstChild; v_currentNumber = 0; for (i=0; i < v_num; i++) { v_positionxArray.push (v_currentPhoto.childNodes[0].firstChild); v_positionyArray.push (v_currentPhoto.childNodes[1].firstChild); v_currentPhoto = v_currentPhoto.nextSibling; } } else { trace ("error occured"); } }; btn_test.onRelease = function () { if (v_currentNumber < v_num-1) { v_currentNumber+=1; picture_x = Number(v_positionxArray[v_currentNumber]); picture_y = Number(v_positionyArray[v_currentNumber]); } }; picture.onEnterFrame = function () { this._x += picture_x; this._y += picture_y; } -----xml data-------------------------------------- <data> <member> <positionx>-591</positionx> <positiony>-130.7</positiony> </member> </data>

    • ベストアンサー
    • Flash
  • FlashにXMLを読み込む

    Flashに外部XMLテキストを読み込みで行き詰まってしまい、質問させて頂きます。XMLテキスト読み込みまではできたのですが、そのテキストにリンクを貼ることができず、困っています。どなたか分かる方がおられましたら教えてください! 【以下XMLになります】 <?xml version="1.0" encoding="UTF-8"?> <topIndex topA="TOPICS" topDescription="テキストテキストテキスト" topB="テキストテキストテキスト" topC="テキストテキストテキスト" topD="テキストテキストテキスト" topE="テキストテキストテキスト"> </topIndex> FlashのASには _global.index_xml = "top.xml"; _global.xmlIndex = new Object(); XML.prototype.ignoreWhite = true; indexXML = new XML(); indexXML.onLoad = XMLLoaded; indexXML.load(index_xml); function XMLLoaded(success):Void { var rootNode:XMLNode = indexXML.firstChild; xmlIndex.topTitle = rootNode.attributes["topTitle"]; xmlIndex.topA = rootNode.attributes["topA"]; xmlIndex.topB = rootNode.attributes["topB"]; xmlIndex.topC = rootNode.attributes["topC"]; xmlIndex.topD = rootNode.attributes["topD"]; xmlIndex.topE = rootNode.attributes["topE"]; _root.topTitle.text = xmlIndex.topTitle; _root.topA.text = xmlIndex.A; _root.topB.text = xmlIndex.B; _root.topC.text = xmlIndex.C; _root.topD.text = xmlIndex.D; _root.topE.text = xmlIndex.E; } と記述しています。 環境はMacでFlash8を使っています。 よろしくお願いします。

  • XMLを使わずに同様の事をしたいのですが…

    某掲示板に同様の質問をしたのですが、本当に困っておりどうにもならない状態です。どうぞ、御教授お願い致しますm(__)m 速習WEbテクニックFlashMX実例サンプル60にある内容からです。 ムービーの再生が始まると同時に、外部のJPG画像ファイルのURLが書き込まれているXMLファイルをロードし、XMLのデータをもとにJPGファイルの数を割り出し、その分だけ読み込み用のムービークリップを複製、表示するというものです。 ソースは次の通りです。これをXMLファイルを使用せず、loadMovieを使用し同様の事をしたいと思っています。どなたかよろしくお願い致します。 myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("photodata.xml"); v_titleArray = new Array (); v_xOffset = myBase._x; myXML.onLoad = function (loaded) { if (loaded) { v_rootNode = myXML.firstChild; v_num = v_rootNode.childNodes.length; v_currentPhoto = v_rootNode.firstChild; v_currentNumber = 0; for (i=0; i < v_num; i++) { v_loadURL = v_currentPhoto.childNodes[1].firstChild; v_titleArray.push (v_currentPhoto.childNodes[0].firstChild); v_currentPhoto = v_currentPhoto.nextSibling; f_makeAndLoad (i, v_loadURL); } } else { trace ("error occured"); } }; XMLファイルのソースは次の通りです。 - <photo> - <picture> <file>photo1.jpg</file> </picture> - <picture> <file>photo2.jpg</file> </picture> - <picture> <file>photo3.jpg</file> </picture> - <picture> <file>photo4.jpg</file> </picture> - <picture> <file>photo5.jpg</file> </picture> </photo>

  • androidアプリ開発 xmlパーサについて

    お世話になっております。 xmlパーサについておききしたいことがございます。 現在、twitterリーダーアプリを製作中なのですが、 全ての行を読み込むと動作が重いので、 読み込む行の数を10行と指定したいのですが、 いい方法はありますでしょうか。 自分で試してみたところ、 表示させる行の数を指定することには成功したのですが、 いまいち、読込み速度の減少が実感できません。 お力をお貸し頂ければ幸いです。 よろしくお願いします。 // タグの識別子 private static final String PROFILE_IMAGE_URL = "profile_image_url"; public ArrayList<TwitterStatus> parse() { ArrayList<TwitterStatus> list = null; XmlPullParser parser = Xml.newPullParser(); try { byte[] data = HttpClient.getByteArrayFromURL(urlStr); parser.setInput(new StringReader(new String(data, "UTF-8"))); int eventType = parser.getEventType(); TwitterStatus currentStatus = null; boolean isFinished = false; while (eventType != XmlPullParser.END_DOCUMENT && !isFinished) { String name = null; switch (eventType) { case XmlPullParser.START_DOCUMENT: list = new ArrayList<TwitterStatus>(); break; case XmlPullParser.START_TAG: name = parser.getName(); if (name.equalsIgnoreCase(STATUS)) { currentStatus = new TwitterStatus(); } else if (currentStatus != null) { if (name.equalsIgnoreCase(TEXT)) { currentStatus.setText(parser.nextText()); } else if (name.equalsIgnoreCase(SCREEN_NAME)) { currentStatus.setScreenName(parser.nextText()); } else if (name.equalsIgnoreCase(PROFILE_IMAGE_URL)) { // アイコンURLを取得 currentStatus.setProfileImageUrl(parser.nextText()); } } break; case XmlPullParser.END_TAG: name = parser.getName(); if (name.equalsIgnoreCase(STATUS) && currentStatus != null) { list.add(currentStatus); } else if (name.equalsIgnoreCase(STATUSES)) { isFinished = true; } break; } eventType = parser.next(); } } catch (Exception e) { throw new RuntimeException(e); } return list; } }

    • ベストアンサー
    • Java

専門家に質問してみよう