• 締切済み

flash、外部xml、サムネイル画像の改行について。

XMLに記述されているサムネイル画像(複数)を帯状に横に等間隔に並べたいのです。 XMLは各ノードに画像名とサイズが属性として記述されており、 画像サイズは横幅は同じですが、高さがそれぞれ異なるので、単純に箱に入れるわけにはいかないようです。 そこで、 1.伸縮可能な箱を用意する。 2.XMLから、属性[高さ]を取得し、1の伸縮可能な箱に設定 3.2つめからは、箱のy座標を、足していく。 4.これを繰り返す。 5.指定の場所まで行ったら、改行する。 4までは以前の質問項目を参考にうまく行ったのですが、 5.「指定の場所まで行ったら、毎回改行する。」 というのが、うまくいきません。 誰かご指南いただけないでしょうか? Flashはcs3です。

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

みんなの回答

  • maaaaaasa
  • ベストアンサー率33% (6/18)
回答No.2

何か難しいことをしているように見えます。 シンプルに考えましょう。 //貼り付けたい写真の総数 picNum = ???;//xmlから取り出す //初期座標(最初の左上の座標) X_INIT = ???;//好きな位置に決める Y_INIT = ???;//好きな位置に決める //写真をおける領域の幅と高さ SCREEN_WIDTH = ???;//好きに決める //写真と写真の横の間隔 sh = 30; //現在の座標 px = X_INIT; py = Y_INIT; for(i = 0 ; i < picNum ; i++){ // 空のムービークリップ p_mc0~ノード数 を作成 pic = _root.createEmptyMovieClip("p_mc"+i,i); //picに写真を突っ込む //写真の位置を決める pic._x = px; pic._y = py; //写真の幅 picWidth = ???;//xmlから取り出す //----現在位置の更新処理 //現在のx座標に、今取り出した画像の幅と間隔分足す x += picWidth + sh; //表示領域の幅を上回っていたら一段下ろす if(x > X_INIT + SCREEN_WIDTH){ x = X_INIT;//x座標は初期位置 y = ???;//写真の高さ } //---------------------- //次の写真へ~ }

  • maaaaaasa
  • ベストアンサー率33% (6/18)
回答No.1

箱のheightを加算して、指定したyを超えたら改行する。 左上から右下に向かって縦に並べていく感じでしょうか。 現在列のy座標 = 最新の画像のy座標 + 最新の画像のheight if(現在列のy座標 > 指定した座標y){ 現在列のy座標 = 0; 列番号++; } それぞれの画像のx座標は 列番号 * (画像幅 + 列間幅)

chum_1979
質問者

補足

早速の回答、ありがとうございます! すみません、少し質問を間違えていました。 「箱のwidthを加算して、指定したx座標を超えたら改行する」でした。 さっそく、参考にしながら進めているのですが、 一度だけ改行され、次に指定の座標までいっても改行されません。 参考までに現在進めているスクリプトをのせておきますので、ご参考にして下さい。 px = 100; py = 100; // 写真と写真の間の隙間 sh のサイズを設定 sh = 30; // i=0→ノード数未満 で i に 1 を加算しながらループ for (i=1; i<n_len; i++) { if (i == 1) { // i が 0 のとき写真の高さを 0 とする ph = 0; } else { // i が 1以上 で 写真の高さに h属性数 を加算 ph += Number(this.firstChild.childNodes[i-0].attributes.h); } // nm 属性の取得 pnm = this.firstChild.childNodes[i].attributes.nm; // 空のムービークリップ p_mc0~ノード数 を作成 _root.createEmptyMovieClip("p_mc"+i,i); // p_mc0~ノード数 の x 座標を指定 _root["p_mc"+i]._x = px+sh*i+ph; // p_mc0~ノード数 の y 座標を指定 _root["p_mc"+i]._y = py; if(_root["p_mc"+i]._x > 1000) { _root["p_mc"+i]._x = -960+(px+sh*i+ph); _root["p_mc"+i]._y += py+sh; } いかがでしょう?

関連するQ&A

  • XMLに記述されているサムネイル画像を等間隔に並べるには?

    XMLに記述されているサムネイル画像(複数)を帯状に(フイルムのネガの様に)縦に等間隔に並べたいのです。 XMLは各ノードに画像名とサイズが属性として記述されており、 画像サイズは横幅は同じですが、高さがそれぞれ異なるので、単純に箱に入れるわけにはいかないようです。 そこで、 1.伸縮可能な箱を用意する。 2.XMLから、属性[高さ]を取得し、1の伸縮可能な箱に設定 3.2つめからは、箱のy座標を、足していく。 4.これを繰り返す。 帯状に並べた画像には後々上下にスライドをさせたいと思います。 ところが、この方法ですと、3つめ以降が意図しない位置に表示されたり、あるいは表示すらされなかったりします。 どなたか力を貸してください。 後々、この帯状の画像(群)を上下にスライドさせたりもしようと思っています。 Flashは8.0です。

    • ベストアンサー
    • Flash
  • 改行がノード?(JAXP)

    xmlのノードについてですが、 <talkset> <name type="first">abc</name> <comment>hello!!</comment> </talkset> というxmlファイルがあった場合に、 JAXPでの、getNodeList()で全てのノードリストを 得ます(mynodelist=root.getNodeList())。 ここで、mynodelist.item(i)として、 上から、ノードを見ていくプログラムを作ったの ですが、 まず、最初にテキストノード(<talkset>の横の改行) 、次に<name>ノードがきて、次にテキストノード( </name>の横の改行?)が取り出されます。 この場合、本来、<name>ノードの後は属性ノードである type、次に、テキストノード(abc)そしてその後に、 改行(テキストノード)が取り出されるべきだと思う のですが、そうなりません(type属性と、abcが、 ノードとして、取り出せない)。 なにか分かる人、お願いします。

    • ベストアンサー
    • XML
  • Flash-XMLで読み込んだ各childNodesにリンクを付ける方法

    初めて質問致します。 類似した質問が過去にあり、参照しましたが解決に至らなかったので、 どうぞよろしくお願いいたします。 FLASHにXMLから画像を読み込み、その画像にXMLから読み込んだリンクを設定したいと思っています。 XMLの記述は ------------------------------------------------------ <GROUP> <SRC>001.jpg</SRC> <URL>001.html</URL> </GROUP> ------------------------------------------------------ となっています。この<GROUP></GROUP>ノードを複数回繰り返します。 FLASHでは ------------------------------------------------------ this["target_mc"+i].target.loadMovie(_root.SRC);/*画像を表示*/ this["target_mc"+i].link_btn.onRelease = function() { getURL(_root.URL);};/*リンクを設定*/ } ------------------------------------------------------ のように記述しています。 問題は、 画像部分(_root.SRC)は、XMLに記述してある、ノードの数の分だけ、きちんと画像が表示されるのに対して、 リンクは、XMLに記述してある、最後のノードのリンクが全ての画像に適用されてしまうことです。 もう少し詳しく説明します。 XMLに<GROUP>ノードが3つあり、それぞれ ■画像パス:001.jpg リンク:001.url ■画像パス:002.jpg リンク:002.url ■画像パス:003.jpg リンク:003.url と設定してあるとすると、 FLASHで出力した場合 ■表示画像:001.jpg リンク:003.url ■表示画像:002.jpg リンク:003.url ■表示画像:003.jpg リンク:003.url というように、画像は001~003.jpgが正常に表示されるのに対して、 リンクは全て003.urlに統一されてしまうのです。 画像が<GROUP>ノードの分だけきちんと表示されているので、 GROUPノードを繰り返すというActionScriptの記述は間違っていないように思います。 どなたか解決策をご存知でしたら、是非ご教示下さい。 何卒よろしくお願いいたします。

  • XMLを読み込んで外部JPGにリンクを貼りたい

    アクションスクリプト初心者です。 どうぞよろしくお願いいたします。 アプリケーションはFLASH8(MAC)です。 いろいろ書籍とかWEBとか方法を探してみたのですが、 なかなかXMLとの連動で参考になる記述が見当たりませんので アドバイスお願いいたします。 やりたい事は、ステージに画像3点配置しその画像クリックで別ページに飛ばしたいのです。 画像指定とリンク先はXMLで外部ファイル化し、更新しやすくしたいのです。 画像のレイアウトは、あらかじめムービークリップをステージ上に配置し、外部JPGと入れ替える形で考えてます。 アクションスクリプトの記述方法とXMLの書き方を どうぞアドバイスよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ページ内に配置してあるサムネイル画像を

    お助けください。 現在製作中のページ内に配置してあるサムネイル画像(JPEG)を、クリックした際に、新しいウィンドウで開きたいのです。 その際に「_blank」ではなく、サイズを指定して開きたいのです。 javascriptで行うのでしょうが、どう宣言して、画像の部分にはどのような記載をすればよいのかわかりません。 ご教授お願いいたします。 なお、このページには新しいウィンドウで開くものはサムネイル画像以外ありません。 サムネイルサイズ:80×60・60×80ピクセルの2種類 リンク先画像サイズ:320×240・240×320ピクセルの2種類 新しく開くウィンドウのサイズは。320×320ピクセルで開きたいです。

    • ベストアンサー
    • CSS
  • Flashで表示されたサムネイルをJavaScriptで拡大表示したい

    HTMLはある程度わかるようになってきただけのJavaScript初心者なのですが、HP制作の途中、Flashを使っていて分からないことが出てきました。 教えていただけるとうれしいです。 Flashのメニューを使っていて、そのメニューはリンク先がカスタマイズ可能です。 リンク先の指定は、テキストファイルの中に記述されている、 「 &url5=http://www.xxxxx.xxx.xx/& 」という場所で指定することになっています。 フォトギャラリーの写真のサムネイルをメニュー項目にして、Flashメニューでサムネイル選択したいと思っているのですが、そのサムネイルをクリックしたときに、同じページの別のテーブルに、そのサムネイルの大きな画像を表示させるということをしたいのですが、できるのでしょうか。 もしできるのなら、教えてほしいです。 Flashメニューでないサムネイルをクリックして拡大画像を表示ということはJavaScriptでできるのですが、Flashメニューで、となると不可能なのでしょうか。 よろしくお願いいたします。

  • サムネイル画像が簡単に出来るソフト

    諸先輩方よろしくお願いします。 例えば400x400の画像があります。 この画像内の一部分を切り抜いて、 100x100のサムネイル画像を作りたいのですが、 これが簡単に出来るソフトは無いでしょうか? 現在、私のやり方は目視上でおおよその正方形で切り抜いて、 それを画像のサイズ変更で100x100で変換しています。 すると当然ながらモトモトがきちんとした正方形で切り抜いていないので、 縦、または横を基準にどちらかが、間延びした様な画像になってしまい上手に出来ません。 何か100x100にこだわらなくても臨機応変にサイスを指定出来る機能が付いて、 その「切抜き枠・雛形(?)」をモト画像の サムネイルしたい箇所に自由に合わせるだけで 簡単にサムネイルが出来るソフト、または機能の付いたソフトを探しています。 よろしくお願いします。

  • 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
  • サムネイル作成プログラム

    こんにちは。 PHPのサムネイル作成プログラムについて、質問があります。 無料のサムネイル作成プログラムを使用させていただいております。 小さいサイズの画像ですと、問題なく小さなサムネイル画像を作成してくれますが、5メガほどの画像だと、エラーになってしまいます。 サイズが大きすぎるのだと思いますが、メモリの制限を増やせば、成功するというような記述を見つけました。 おおよそ、ファイルサイズの何倍ぐらいのメモリサイズが必要なのでしょうか? 5~6メガのファイルを扱いたいのですが・・・。 もしかして、Webサーバ上で、5~6メガのサイズの圧縮処理は無謀なのでしょうか? 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 外部XMLからFlashに読み込んだ画像にリンクをつける方法

    初めまして。 この度初めて外部XMLをFlashに読み込むコンテンツを制作しており、最後の段階でハマっておりますため、皆様のお力をお借りできればと思い投稿させていただきました。 ちなみに制作環境はMac OS10.3、flashはCS3です。 よくあるパターンのflashによる横スクロールメニュー(画像がマウス操作で左右に流れるもの)を作成しておりますが、表示される10枚の画像をflash内ではなく、外部imagesフォルダに置いておき、XMLにてflash内に作成されたムービークリップに読み込み表示させるコンテンツで、表示されたそれぞれの画像に、やはりXML内に記述されたそれぞれ別のURLを指定して、クリックでジャンプさせようとしています。 横スクロールに関しては問題なく表示できましたが、問題はリンクです。traceでは10個のURLが戻ってくるのですが、実際に各画像をクリックしてみると、全ての画像が10番目のリンク先となってしまっています。 ネットでも色々調べてみたのですが、getURL(this.変数)ではなくgetURL(this._parent.変数)にする等試してみましたがうまくいきません。 下記にActionScriptとXMLファイルの内容を記載致しますので、ご参考の上、ご回答いただけましたらありがたく思います。 ~以下1フレーム目のフレームスクリプト~ var obj_array:Array = new Array(); var center:Number = Stage.width/2; var menu_num:Number = 10; var maxlength:Number = 120*menu_num; var friction:Number = -0.03; System.useCodepage = true; 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; _root.attachMovie("menu", menu_str, i); obj_array[i] = eval(menu_str); obj_array[i].num = i; obj_array[i]._x = 120*(i-1); obj_array[i]._y = 30; obj_array[i]._alpha = 70; var jpg_str:String = obj_xml.firstChild.childNodes[i-1].firstChild.firstChild; obj_array[i].jpg_mc.loadMovie(jpg_str); var jumpURL:String = obj_xml.firstChild.childNodes[i-1].lastChild.firstChild.nodeValue; jump = jumpURL; trace(jump); obj_array[i].onEnterFrame = scrollphoto_me; obj_array[i].onPress = press_me; obj_array[i].onRollOver = roll_me; obj_array[i].onRollOut = rollout_me; } } else { seltext = "xml read error"; } } function scrollphoto_me():Void { var speed:Number = (_root._xmouse-center)*friction; var vx:Number = this._x+speed; if (vx<=-120) { vx += maxlength; vx = Math.round(vx); } else if (vx>=Stage.width-5) { vx -= maxlength; } vx1 = Math.round(vx); this._x = vx1; updateAfterEvent(); } function press_me():Void { getURL(this.jump); } function roll_me():Void { this._alpha = 100; } function rollout_me():Void { this._alpha = 70; } stop(); ~以下XMLファイルの記述~ <?xml version="1.0" encoding="Shift_JIS"?> <jpeg> <jumpURL> <jpegURL>images/fla/image1.jpg</jpegURL> <URL>http://www.yahoo.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image2.jpg</jpegURL> <URL>http://www.exnos.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image3.jpg</jpegURL> <URL>http://www.sony.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image4.jpg</jpegURL> <URL>http://www.toyota.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image5.jpg</jpegURL> <URL>http://www.nissan.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image6.jpg</jpegURL> <URL>http://www.honda.co.jp</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image7.jpg</jpegURL> <URL>http://www.mafdamino.com</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image8.jpg</jpegURL> <URL>http://www.nakata.net</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image9.jpg</jpegURL> <URL>http://www.nifty.com</URL> </jumpURL> <jumpURL> <jpegURL>images/fla/image10.jpg</jpegURL> <URL>http://www.adobe.com</URL> </jumpURL> </jpeg> 以上、よろしくお願致します。

    • ベストアンサー
    • Flash