トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     XMLのロードについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ニューライス
Åê¹ÆNo.32903
投稿日時: 2007-4-13 12:29
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
XMLのロードについて
こんにちわ、newriceです。

_rootにattachMovieでsampleというmcを作成し、
外部XMLの情報をsampleMCに表示させたいと思っています。

外部XMLの解析については、すべてtraceをかけ問題ないようですが
下記のスクリプトでsample_MCの作成はできているのですが
外部XMLの情報が表示されません。

sample_MC内には
photo(画像表示用ムービークリップ)、price(テキストボックス)、
text(テキストボックス)を配置しています。


function createMC():Void {
	for(var i:Number=0;i<nodeList.length;i++){
		var xpos:Number = 50;
		var ypos:Number = 50+(100*i)
		_root.attachMovie("sample","sample"+i,i,{ _x:xpos, _y:ypos });
		_root.sample[i].photo.loadMovie(itemArray[i].path);
                         _root.sample[i].title = itemArray[i].name;
		_root.sample[i].price = itemArray[i].price;
		_root.sample[i].text = itemArray[i].info;
		}
	}


読み込まれない原因についてお知恵を貸してください!
よろしくお願いします。
Tonpoo (gaienboy改め)
Åê¹ÆNo.32904
投稿日時: 2007-4-13 12:55
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: XMLのロードについて
こんにちは、gaienboyといいます。

下記でいかがでしょう?

function createMC():Void {
	for(var i:Number=0;i<nodeList.length;i++){
		var xpos:Number = 50;
		var ypos:Number = 50+(100*i)
		_root.attachMovie("sample","sample"+i,i,{ _x:xpos, _y:ypos });
		_root.sample[i].photo.loadMovie(itemArray[i].path);
                         _root.sample[i].title = itemArray[i].name;
		_root.sample[i].price.text = itemArray[i].price;
		_root.sample[i].text.text = itemArray[i].info;
		}
	}


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

ニューライス
Åê¹ÆNo.32907
投稿日時: 2007-4-14 1:55
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
gaienboyさん、回答ありがとうございます。

教えていただいた方法で行ってみましたが、
結果は変わりませんでした。

sampleMCは作られていますが、そこには何もロードはされて
おらず、空白になります。

XMLの解析やnode参照がうまくできてないのでしょうか?
念のため、外部XMLと解析用の関数ものせてみます。
(※長文になります)


【_root第1フレーム】

/**********************************
初期設定
************************************/
var myXML:XML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function(success:Boolean){
	if(success){
		parse(this);
		}
	}
myXML.load("xmlData.xml");

var itemArray = new Array;

/**********************************
XML解析
************************************/

function parse(data:XML){
	dataNode = data.firstChild;
	pathNode = dataNode.firstChild.attributes.path;
	nameNode = dataNode.firstChild.firstChild.nodeValue;
	nodeList = dataNode.childNodes;
	nodeNum = nodeList.length;
	itemNode = dataNode.firstChild;
	while(itemNode){
		var sPath = itemNode.attributes.path;
		var sName = itemNode.attributes.name;
		var sPrice = itemNode.attributes.price;
		var sInfo = itemNode.firstChild.nodeValue;
		itemArray.push({path:sPath , name:sName , price:sPrice , info:sInfo})
		itemNode = itemNode.nextSibling
		}
		createMC();
}

/**********************************
sampleMCの作成とXML読み込み
************************************/

function createMC():Void {
	for(var i:Number=0;i<nodeList.length;i++){
		//trace(itemArray[i].info);確認用
		var xpos:Number = 50;
		var ypos:Number = 50+(100*i)
		_root.attachMovie("sample","sample"+i,i,{ _x:xpos, _y:ypos });
		_root.sample[i].photo.loadMovie(itemArray[i].path);
        _root.sample[i].title = itemArray[i].name;
		_root.sample[i].price.text = itemArray[i].price;
		_root.sample[i].text.text = itemArray[i].info;
		}
	}

-----------------------------------------------------
【外部XML/xmlData.xml】

<?xml version = "1.0" encording = "UTF-8"?>
<data>
 <item path = "img/s001.jpg" name = "あんまん" price = "100" >サンプル1</item>
 <item path = "img/s002.jpg" name = "にくまん" price = "120" >サンプル2</item>
 <item path = "img/s003.jpg" name = "ピザまん" price = "140" >サンプル3</item>
</data>



問題点がお分かりになれば、是非ご指摘をお願いします!
ひろゆき
Åê¹ÆNo.32908
投稿日時: 2007-4-14 3:15
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
引用:
問題点がお分かりになれば、是非ご指摘をお願いします!

sampleMCは生成されているのに...。ということであれば、
それ以降に目をこらす必要があるのでは?

"sample" + i なのに、sample[i] になっていますね。


var _mc:MovieClip = _root.attachMovie("sample", "sample"+i, i, { _x: xpos, _y: ypos });
_mc.photo.loadMovie(itemArray[i].path);
_mc.title.text = itemArray[i].name;
_mc.price.text = itemArray[i].price;
_mc.txt.text = itemArray[i].info;
とすれば、もっとスッキリしますが。
# text というインスタンス名はマズい気がします。なので、txt で。
# title も、テキストフィールドのインスタンス名でしょうか?


----------------
質問する際は、回答者に具体的な情報を与えてください。

ニューライス
Åê¹ÆNo.32910
投稿日時: 2007-4-14 9:20
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
ひろゆきさん、いつもありがとうございます。

引用:

sampleMCは生成されているのに...。ということであれば、
それ以降に目をこらす必要があるのでは?


そうですね、ついつい焦ってしまいまして‥

ひろゆきさん修正のスクリプトで試したところ、正常に動作しました!

var _mc:MovieClip = _root.attachMovie("sample", "sample"+i, i, { _x: xpos, _y: ypos });

この書き方をするとものすごく分かりやすく、生成後のオブジェクトへの読み込みもスムーズですね。ありがとうございます。

引用:

# text というインスタンス名はマズい気がします。なので、txt で。
# title も、テキストフィールドのインスタンス名でしょうか?


# textは確かにまずかったですね。注意します!
# titleもご指摘の通り、テキストフィールドです。書き漏らしてしまいました。

ところで、ご指摘いただいた点で、分からなかった点が
引用:

"sample" + i なのに、sample[i] になっていますね。

です。
たしかに、traceしてみたらundefinedでした。
これは、sample[i]=sample0、sample1‥と同じになると勘違いして
たためです。
もし、今回自分で書いたステートメントで、もし希望の動きを実現する
となると、sample[i]と"sample"+iの部分を、どのように書き直せばよいかが分からんです。

あと一点、初歩的な疑問なのかもしれませんが、パブリッシュしてみたところ、テキストフィールドになっているため、表示されているテキストにカーソルをいれると文字入力ができてしまいます。
これは入力ができないようにすることはできるのでしょうか?

たびたび申し訳ないのですが、よろしくお願いします!
ひろゆき
Åê¹ÆNo.32912
投稿日時: 2007-4-14 10:59
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
引用:
sample[i]と"sample"+iの部分を、どのように書き直せばよいかが分からんです。

ドット演算子と配列アクセス演算子

例えば、ムービークリップの階層を考えてみましょう。
my_mc 上にある test_mc にアクセスしようとすれば、
my_mc.test_mc
としますよね?

これを配列アクセス演算子を用いて、
my_mc["test_mc"]
と表すこともできます。

ここで、"test_mc" が文字列であることに注目すれば、
var childName:String = "test_mc";
my_mc[childName]
とすることもできるはずです。

さて、"sample" + i とインスタンス名をつけた _root 上のムービークリップに
アクセスするには、どのように記述されますか?
sample[i] ですか?

引用:
表示されているテキストにカーソルをいれると文字入力ができてしまいます。

テキストフィールドが選択可能になっているからでは?


----------------
質問する際は、回答者に具体的な情報を与えてください。

ニューライス
Åê¹ÆNo.32915
投稿日時: 2007-4-14 20:11
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
ひろゆきさん、教えて頂いた配列アクセス演算子を確認しました。

引用:

さて、"sample" + i とインスタンス名をつけた _root 上のムービークリップに
アクセスするには、どのように記述されますか?
sample[i] ですか?


["sample" + i]で見事解決しました!
my_mc.test_mc = my_mc["test_mc"]ということを初めて知りました。
ありがとうございます!

テキストフィールドについて、「テキスト入力」にしており
「選択可能」が固定で設定されてしまい、「選択不可能」への
変更ができませんでした。
「ダイナミックテキスト」にしたところ、問題なく「選択不可能」に設定でき、希望通りの動作になりました。

また、ここで質問なのですが
このファイルで読み込むjpg画像(80px/80px)にもMovieClipLoaderをつけた方が良いのでしょうか?
画像サイズが小さい場合には、問題がないのかどうかが分かりません。

ひろゆき
Åê¹ÆNo.32916
投稿日時: 2007-4-14 20:22
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
引用:
ニューライスさんは書きました:
このファイルで読み込むjpg画像(80px/80px)にもMovieClipLoaderをつけた方が良いのでしょうか?

ボタンでの画像スライドがうまくできません。」を
読み直された方がよろしいのでは?

関数から戻るタイミング」というスレッドもありますので、
そちらも熟読された方がよろしいかと思いますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

ニューライス
Åê¹ÆNo.32926
投稿日時: 2007-4-15 12:53
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
ひろゆきさん、ありがとうございます。

教えていただいたスレッドを拝見していますが、
分からない部分もあり、いろいろ調べながら理解をしています。

MovieClipLoaderを使おうと思い、いろいろ試していますが
教えて頂いたスレッドにない部分で、また分からないところがあります。
MovieClipLoaderで読み込むを参考に作成しています。

■疑問
attachMovieで生成するムービークリップ(sample)内にprogressBarを配置しました。
しかし、progressBar.perやprogressBar.totalなどの
テキストを表示させるためのパス指定方法がわからず、
読み込みエラーなどが表示できない。

例:["sample"+i]progressBar.total
  ["sample"+i]の指定方法が分からない
 (変数iはtraceすると「9」(XMLノード数)がforループの回数分返ってきます)

テキストを表示させるには、どのような方法があるのでしょうか?

念のため、関数createMC()のソースを記載させていただきます。


function createMC():Void {
	for(i:Number=0;i<itemArray.length;i++){
		var xpos:Number = 400;
		var ypos:Number = 20+(105*i);
		var _mc:MovieClip = _root.attachMovie("sample","sample"+i,i,{ _x:xpos, _y:ypos });
		_mc.title.text = itemArray[i].name;
		_mc.price.text = itemArray[i].price;
		_mc.txt.text = itemArray[i].info;		
		mcLoader.loadClip(itemArray[i].path,_mc.photo);
		}
	}


何度も申し訳ないのですが、よろしくお願いいたします。
ひろゆき
Åê¹ÆNo.32928
投稿日時: 2007-4-15 13:07
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
プログレスバーをつける必要があるのですか?

でないのであれば、もっと基本的なことから始めた方が良いのでは?
MovieClipLoaderクラスについて

手っ取り早く使えそうなものを理解されずに使ったり、
一度に複数のことを解決しようとしたりしても、混乱を招くだけだと思いますが。


それに、「MovieClipLoader をつける必要があるかどうか」が
質問の主旨ではないのですか?


----------------
質問する際は、回答者に具体的な情報を与えてください。

(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops