• 締切済み

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>

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

みんなの回答

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

#1です。 MovieClipLoader を使う方がファイルの存否を早い段階で確認でき、効率もいいのでオススメです。MX 2004 から登場するクラスですから、MX 2004 で作成してください。 読み込むファイルは、image +通し番号+.jpg という命名規則で管理していることが条件になります。この番号を変数で指定し、カウントアップしながら読み込みの命令を出していきます。 MovieClipLoader は1つのオブジェクトで複数の読み込みを管理できます。 例えば MovieClipLoader.loadClip で5件の読み込み命令を出したら、読み込みが始まった・終わった・エラーが出た時など、読み込みに関するイベントが5組、それぞれのムービークリップで発生します。 今回は、MovieClipLoader のイベントのうち、ロードが始まった時に発生する onLoadStart 、ロードが終わり初期化も済んで読み込んだものが利用可能になった時発生する onLoadInit 、エラーが起きた時に発生する onLoadError を利用します。 スクリプトの流れは、次のように考えます。 ファイル名を共通の名前+通し番号で付けていますから、  loadClip( "image" + cnt + ".jpg" ); このように、番号の部分に変数を使って読み込みの命令が出せます。変数ですので、+1 ずつカウントアップするといった算術演算も可能です。 ファイルオープンの状況を把握するために、変数(フラグといいます)を1つ用意します。仮に load_status という変数を用意するとして、値の意味を次のように決めます。  0:待機(ファイルオープン待ち) 1:ファイルオープン成功 -1:ファイルオープン失敗 ムービークリップを複製し、とりあえず、読み込み命令を出します。 この読み込みで、onLoadStart イベントが発生するまで待機します。 onLoadStart イベントが発生した時、MovieClipLoader 側で load_status を1にして、ファイルのオープンに成功したことを知らせます。 タイムライン側では、フレーム間をループしながら load_status の値を監視します。1になった時はファイルがあったということなので、ファイルカウントを更新して次のファイルを探しに行きます。 これを繰り返していくと、image1 ~ image N の画像を読み込めることになりますが、いつかは画像ファイルが尽きて、指定のファイルが見当たらなくなります。その時はエラーになり、onLoadError イベントが発生します。 onLoadError イベントでは、ファイルが見付からないためにエラーになったのか( URLNotFound )、途中で何らかの理由で失敗してエラーになったのか( LoadNeverCompleted )を区別することができます。このうち、URLNotFound でエラーイベントが起きた時には load_status を -1 にし、ファイル探しが終了したことを知らせます。 ところで、1つ1つの読み込みは onLoadInit イベントが発生するので問題ないのですが、全部のムービークリップでの読み込みが終わったかどうかは、どのようにして検出できるでしょうか? 簡単なのは、ファイルの総数とロードが終了した件数を照合することです。 変数を1つ用意(仮に loaded_files とします)し、onLoadInit イベントが発生するたびに、この変数をカウントアップします。 回線のトラブルなどで途中でロードが失敗した場合は、とりあえず読み込み終了ということでカウントに入れておきます。 ファイルの総数は、読み込みの命令を出す時に利用した変数に保存されています。この数と loaded_files の数を照合し、同じになるまで待つ、といった流れになります。 整理してみますと、次のような構成になります。  フレーム1:初期設定  フレーム2:ムービークリップを複製し、画像の読み込み命令を出す  フレーム3:待機(ファイルの存否確認待ち)  フレーム4:ファイルオープン成功時は次のファイルを探しに行き、失敗時は先に進む  フレーム5:待機(全読み込み完了待ち)  フレーム6:全読み込の終了判定  フレーム7:タイムラインはここで止める MovieClipLoader は、イベント発生時の処理を予め定義しておくと、イベントが起きたムービークリップ全てに同じ処理をしてくれます。 また、どのムービークリップでイベントが起きたかも判別できますから、例えば、ダウンロードが途中で失敗した場合は読み込み直すといったことも可能です。 (ただし、ファイルを探すループに読み直しの処理を組み込むとファイルカウントがズレてしまい、不具合の原因になりかねないので、読み直しは別の工夫が必要です) 画像の読み込みには、その受け皿となるムービークリップが必要です。今回は画像の数が不定のため、必要な数だけ予め配置しておくことができません。代わりに、ムービークリップ(ここでは仮に、cell_org という名前にします)を1つだけ置いておき、これを複製しながらそこに読み込んでいくことにします。 なお、コピー元のオリジナルに設定したオブジェクトアクションは、コピーしたムービークリップにも継承されます。例えば、全部の読み込みが終わるまで非表示にしたい場合は、オリジナルに onClipEvent(load)で _visible プロパティを false にするスクリプトを書いておくと、コピーも最初は非表示になります。 以下のスクリプトでは、コピーされたムービークリップは cell +番号というインスタンス名が付きます。普通のムービークリップ同様に、cell1._x = ・・・などとして利用できます。 スクリプトは、大体次のようになります。 (↓このスクリプトをコピーして使う場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) ●フレーム1(初期設定)  //ファイル数・セル番号を保持  cnt = 1;  //読み込みが完了したファイルの数  loaded_files = 0;  //ファイル存否確認の進行状況を管理  //0:待機 1:ファイルオープン成功 -1:ファイルオープン失敗  load_status = 0;  //ロードに必要なオブジェクトの生成と登録  load_obj = new MovieClipLoader();  event_obj = new Object();  load_obj.addListener( event_obj );  /*ファイルのオープンに成功した時の処理*/  event_obj.onLoadStart = function()  {   //成功を知らせる   load_status = 1;  };  /*読み込み完了時の処理*/  event_obj.onLoadInit = function( target_clip:MovieClip )  {   //読み込みが完了したファイル数を更新   loaded_files++;  };  /*エラー発生時の処理*/  event_obj.onLoadError = function ( target_clip:MovieClip , error_code:String )  {   switch( error_code )   {    case 'URLNotFound':     //ファイルが見付からなかった場合:     //読み込み用に作ったセルを削除する     target_clip.removeMovieClip();     //読み込むファイルがないと見なし、終了を知らせる     load_status = -1;     break;     case 'LoadNeverCompleted':      //途中で失敗した場合:      //読み込みが完了したファイル数を更新      loaded_files++;      break;     default:      break;   }  }; ●フレーム2(画像の読み込み)  //セルを複製して画像を読み込む  cell_org.duplicateMovieClip( "cell" + cnt , cnt );  load_obj.loadClip( "image" + cnt + ".jpg" , this[ "cell" + cnt ] ); ●フレーム3  フラグ監視用のダミーフレーム。スクリプトは設定しません。 ●フレーム4(ファイルオープン判断)  switch( load_status )  {   case 0:    //ファイルへのアクセス完了を待つ    gotoAndPlay( 3 );    break;   case 1:    //ファイルオープン成功の場合:    //次のファイルを探しに行く    cnt++;    load_status = 0;    gotoAndPlay( 2 );    break;   case -1:    //ファイルオープン失敗の場合:    //全てのファイルを探したものと見なし、先に進む     gotoAndPlay( 5 );     break;   default:     break;  } ●フレーム5  全読み込み完了を待つためのダミーフレームで、スクリプトは設定しません。  ロード完了率を表示したい時は、ここで算出するといいでしょう。 ●フレーム6(全読み込みが終わるまで待つ)  //全ての読み込みが完了した場合  if( loaded_files == ( cnt - 1 ) )  {   var i;   //各画像の位置を決め、表示する   for( i = 1 ; i <= ( cnt - 1 ) ; i++ )   {    this[ "cell" + i ]._x = 100 * ( i - 1 );    this[ "cell" + i ]._visible = true;   }  }  //読み込み中の場合は終了を待つ  else  {   gotoAndPlay( 5 );  } ●フレーム7(普段はこのフレームを表示)  stop(); MovieClipLoader の getProgress では、ロードの総バイト数やロード完了済みバイトを取得できます。この値から完了率を算出して、Now Loading ○%という表示も可能です。 (戻り値が2つありますので、戻り値の取得方法にご注意ください。汎用型である Object 型の変数を作って受け取ります) また、画面に入りきらないほど画像がある場合は、マスクとスクロールバーを使って、スクロールできるようにする方法もあります。 MX には ScrollBar という UI コンポーネントがありましたが、MX 2004 では廃止されてしまいました。しかし、MX 2004 のアップデータ Ver.7.2 を導入すると、ScrollBar より使いやすくなった UIScrollBar というコンポーネントが使えるようになります。 スクロールバーのあるサムネイル画面の基本的な考え方・作り方は、http://okweb.jp/kotaeru.php3?q=974758 で紹介していますので、よろしければご参照ください。 スクリプトは MX の ScrollBar 対応のものです。ScrollBar から MX 2004 の UIScrollBar に移行する時の変更ポイントは、http://okweb.jp/kotaeru.php3?q=989128の#1や#3で紹介しております。 長文である上に、半ば質問者様との対話のようになっており、見辛くて恐縮ですが、こちらもご参考程度に。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

jionnobourei
質問者

補足

Script付きの御説明ありがとうございます。 ASについてまだ経験が浅い分、中々解釈できなかった分が多かったのですが、丁寧な解説していただいたおかげでだいぶ分かってきたような気が致します。 1フレームでの処理ではなく、いくつかのフレームをまたいで作成する方法については全くイメージできなかったため、大変参考になりました。 もう一つ、お聞きしたいことがあるのですが、私が最初、提示したScriptはXMLファイルを用いての物でした。 その応用として、例えばムービー上のテキストフィールドにURLやjpg画像枚数を入力することにより、ActionScriptによってXMLファイルを作成し、自動的にそれを読み込み同様の事をすることができるのでしょうか? 要求ばっかりで大変申し訳ないですが、DPE様、またここを呼んでくださった方、御教授の程お願い致します。

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.2

for(i=0;i<5;i++){f_makeAndLoad (i,"photo"+(i+1)+".jpg");}

jionnobourei
質問者

補足

せっかく教えていただいたスクリプトなのですが、どうも上手くいかないです。 それと大変申し訳ないのですが、f_makeAndLoadファンクションについての記述がなかったので補足させていただきます。申し訳ありませんでした。 function f_makeAndLoad (num, path) { myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1); v_name = eval("myBase.myLoad"+num); v_name._x = 150 * num; v_name._y = 0; v_name.loadMovie (path); myBase.myLoad._visible = false; }

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

お使いの Flash は MX でしょうか? ファイル名を、共通の名前(例えば photo や image など)+通し番号で付けており、途中に欠番がないことを前提にすると、ファイルオープンエラーを利用してフォルダにあるだけ読み込むことは可能です。 Flash の外部ファイルの読み込みは、複数のムービークリップで並行して実行できるようになっています。 これを、1つの読み込みが終わるのを待って次の読み込みの指示を出していたのでは、ロードにかなり時間がかかってしまいます。 ファイルの存否をいかに早く確認し、複数の読み込み指令を出していくかがポイントとなるわけですが、この方法が、MovieClip.loadMovie を使うか、MX 2004 から使えるようになった MovieClipLoader を使うかどうかで、作業効率もスクリプトも変わってきます。 エラーを利用してファイルがあるだけ読み込み、スクロールバー付きのサムネイル画面を作るというテーマで、何回かスクリプトや作り方の例をご紹介してきました。 長文で恐縮ですが、よろしければ、考え方のご参考までに。  ・エラーが出るまでファイルを読むループ   http://okweb.jp/kotaeru.php3?q=961443      #7で、エラーを利用した読み込みのスクリプトを紹介しています。   対象が画像の場合は、読み込みが成功したかどうかの判定に少々工夫が必要です。 (同じ質問者様の、スクロールバーに関する質問やループを利用した読み込みに関する質問が、スクロールバー付きのサムネイル画面を作るという一連の作品に関する質問になっています) 試作品をいろいろ作ってきましたので、お役に立てるようであれば、スクリプトをご紹介します。

jionnobourei
質問者

補足

環境をお伝え忘れておりました。すいません。 次の通りです。 Windows2000 IE6 FlashMXです。 Flashは一旦MXを使っていますが、MX2004も使用可です。 早々の御教授、ありがとうございます! FlashのASを始めて、まだ浅いので解釈に時間がかかります故、これから深く読んでいきたいと思っています。 それと、DPE様がおっしゃられていた試作品のスクリプトを紹介していただきたいです。 よろしくお願い致します。

関連するQ&A

  • 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を読み込んだときに読み込むまでに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
  • FlashPlayer6から8の仕様の変更について

    Flash8,WinXpにてオーサリングしております。 質問です。 下記のスクリプトをFlashPlayer6でパブリッシュすると動作するのですが、FlashPlayer8でパブリッシュすると動作しません。どのソースが使用の変更対象となっているのでしょうか。Macromediaのサイトで調べましたが、見つけ出す事ができませんでした。どうぞ宜しくお願い致します。 System.useCodepage = true; 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"); } }; function f_makeAndLoad (num, path) { myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1); v_name = eval("myBase.myLoad"+num); v_name._x = 110 * num; v_name._y = 0; v_name.loadMovie (path); myBase.myLoad._visible = false; } myNext.onRelease = function () { if (v_currentNumber < v_num-1) { v_currentNumber+=1; } }; myPrev.onRelease = function () { if (v_currentNumber > 0) { v_currentNumber-= 1; } }; myBase.onEnterFrame = function () { this._x += ((-110*v_currentNumber + v_xOffset)-this._x) / 4; v_title = v_titleArray[v_currentNumber]; _global.media_title=v_title; };

  • 外部画像を読込んで個別にアクションを設定したい。

    XMLを読込み、XML内に書かれたURL先の画像(複数枚)を取込んでサムネイル表示させています。参考書を見本にしてここまでは出来ました。 更に、読込んだ画像をクリックするとその画像に対する記事を別ウィンドウで開きたいのですが可能でしょうか? 具体的に言いますと、次の■■■部分を画像毎に設定することは可能でしょうか? on (release) { getURL("JavaScript:newWin(\"■■■\",\"sub\");"); } ●XMLの内容が下記であった場合 1.jpgをクリックすると1.htmlが開き、2.jpgをクリックすると2.htmlが開くといった感じです。 <pho>  <pic>   <fle>1.jpg</fle>   <toU>1.html</toU>  </pic>  <pic>   <fle>2.jpg</fle>   <toU>2.html</toU>  </pic> </pho> ■ActionScriptの内容です。(全部書くと長くなってしまうので一部省略してます) myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("cpnimgs.xml"); v_xset = myBase._y; myXML.onLoad = function (loaded) { if (loaded) { v_rNode = myXML.firstChild; v_num = v_rNode.childNodes.length; v_cPhoto = v_rNode.firstChild; for (i=0; i < v_num; i++) { v_loadURL = v_cPhoto.childNodes[0].firstChild; v_cPhoto = v_cPhoto.nextSibling; f_makeimg (i, v_loadURL); } } else { trace ("error occured"); } }; function f_makeimg (num, path) { myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1); v_name = eval("myBase.myLoad"+num); z_Num = Math.floor(num / 4) ; v_name._x = (num - (z_Num *4)) * 123; v_name._y = z_Num * 175; v_name.loadMovie (path); myBase.myLoad._visible = false; }

  • 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から読み込んだテキストをリンク表示する方法

    初心者です。 XMLからテキストデータを読み込んで、 リンクを貼り付けようとしてるのですが、うまくいきません。 どなたかご教授いただけないでしょうか? ■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> ■ASの一部↓ menu_mc["btn_mc"+i].onPress = function() { getURL(myXML.firstChild.childNodes[i].childNodes[2].firstChild.nodeValue,"_blank");

    • ベストアンサー
    • Flash
  • xmlでswfを読み込むには?

    flashでスライドショーを作っています。 同じフォルダにxmlファイルを作って指定した写真を取り込むようにしています。 そしてその写真のタイトルもフラッシュ内に表示されるところまで作りました。 xmlは以下のようなものです。 <?xml version="1.0" encoding="utf-8"?> <Photo> <picture image="photo01.jpg">タイトル01</picture> <picture image="photo02.jpg">タイトル02</picture> </Photo> そこで、画像とタイトルを読み込むだけでなく、 タイトルごとに別のswfファイル(ボタンを含んだswfファイル)も読みこむようにしたいのですが、 どのようにしたら良いでしょうか? わかる方いらっしゃいましたら、どうぞよろしくお願いします。

  • XMLで画像を読み込むと巨大化します・・・

    Flash8にて、外部XML画像とURLを読み込みしています。 初の試みでして、たどたどしくも双方ともに読み込むところまでは皆様のこれまで作られたデータを基に作成出来たのですが、画像を読み込んだときに巨大化されてしまって困っています。 ▼XML --------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <jpeg> <jpegURL>images/image1.jpg</jpegURL> <link>http://yahoo.co.jp/1</link> <jpegURL>images/image2.jpg</jpegURL> <link>http://yahoo.co.jp/2</link> <jpegURL>images/image3.jpg</jpegURL> <link>http://yahoo.co.jp/3</link> <jpegURL>images/image4.jpg</jpegURL> <link>http://yahoo.co.jp/4</link> </jpeg> --------------------------------------------------- 800×250で画像を読み込みたいのですが、 読み込むと、すさまじく巨大化してしまっています。。 作ろうとしているのは、横にスクロールするナビゲーションです。 XMLで画像とリンク先を指定、画像は同じ階層に「img」というフォルダを作って入れています。 下記が、1フレーム目に記載しているASです。 ▼AS --------------------------------------------------- var obj_array:Array = new Array(); var center:Number = Stage.width/2; var menu_num:Number = 4; var maxlength:Number = 800*menu_num; //サイズ指定箇所 var friction:Number = -0.03; var obj_xml:XML = new XML(); obj_xml.onLoad = start_me; obj_xml.ignoreWhite = true; obj_xml.load("scrollslide.xml"); function start_me(success:Boolean):Void { if (success == true) { for (var i = 1; i<=menu_num; i++) { var menu_str:String = "menu"+i; obj_array[i] = _root.attachMovie("menu", menu_str, i); obj_array[i].num = i; obj_array[i]._x = 800*(i-1); //X座標 obj_array[i]._y = 0; var jpg_str:String = obj_xml.firstChild.childNodes[(i-1)*2].firstChild; var link_str:String = obj_xml.firstChild.childNodes[i*2-1].firstChild; obj_array[i].jpg_mc.loadMovie(jpg_str); obj_array[i].onEnterFrame = scrollphoto_me; obj_array[i].onPress = press_me; obj_array[i].onRollOver = roll_me; obj_array[i].onRollOut = rollout_me; //関数呼び出し obj_array[i].onRelease = release_me; obj_array[i].link = link_str; } } else { seltext = "xml read error"; } } function release_me():Void { trace(this.link); getURL(this.link, "_parent"); } function scrollphoto_me():Void { var speed:Number = (_root._xmouse-center)*friction; var vx:Number = this._x+speed; if (vx<=-800) { //ステージ左に消えたら vx += maxlength; //サムネイルの最後列の後ろに移動 } else if (vx>=Stage.width+10) { //ステージ右に消えたら vx -= maxlength; //サムネイル最前列の前に移動 } this._x = vx; updateAfterEvent(); } function roll_me():Void { this._alpha = 80; } function rollout_me():Void { this._alpha = 100; } stop(); --------------------------------------------------- サイズを指定している箇所に問題があるのでしょうか。 初心者でして、全く見当がつかず困っております。 もしよろしければ、先人の方たちにご意見とご指摘を頂ければと思います。宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • XMLファイルから読み込んだ数値を変数に入れる方法

    XMLファイルから取り出した数値を変数に入力したい場合の書き方を お教えいただけないでしょうか? filenoArr[0] = Number(filenoList[4].lastChild.firstChild.nodeValue; ↑から数値が出される。 num = ○; このnumにはfor文等の処理が行われる際に使用しています。 filenoArr[0] = i; num = i; ↑と書いても処理が重くなるだけで、エラーを返します。 どなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう