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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     (XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
えり
Åê¹ÆNo.43596
投稿日時: 2009-10-4 7:07
新米
居住地:
投稿: 23
使用環境:
win,mac
Flash CS4
(XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
配列とXMLデータを組み合わせた、
外部ファイルの、読み込み系コンテンツを作成勉強中にて、度々息詰まってどうしても解明できず参りました。質問すみません。

こちらのサンプルで、上下ボタンを押したら、
http://hmatrix.sakura.ne.jp/xml_simple/tameshi.html

読み込んだXMLを配列に落とし込んで、その配列要素を進めたり戻したりいたして表示たいのですが、デフォルト表示にしているmenuArray[0]から動かず、menuArray[1],[2],[3]・・・と表示が移動してくれません。


XML読み込みはうまくいっており、xClickPre、xClickNext関数のところでカウンターとして使っている変数var currentSelectedNum:uint=0;も、xClickPre時=0 ClickNext時=1と
ちゃんと変化しているのですが。。

本当に済みませんがまた基礎のところでつまづいてしまいました。
なんとかアドバイスを頂けませんでしょうか宜しくお願いいたします(泣)


----------------------------------------*


//Loaderオブジェクトの作成
var xmlLoader:URLLoader = new URLLoader();

//XML読み込み
var myurl:URLRequest=new URLRequest("menu.xml");
xmlLoader.load(myurl);

//イベント処理
xmlLoader.addEventListener(Event.COMPLETE, xComplete);

//配列の定義
var menuArray:Array=new Array();

//XML読み込みのイベントハンドラ定義
function xComplete(evt:Event):void {
var menuXML:XML = new XML(xmlLoader.data);
for each (var property:XML in menuXML.shurui) {
menuArray.push(property.@image);
}
baseClick(0);
}



//ボタン各種のイベント処理
btn_ue.addEventListener(MouseEvent.CLICK,xClickPre);
btn_shita.addEventListener(MouseEvent.CLICK,xClickNext);

function baseClick(num:uint):void {
var imageLoader:Loader=new Loader();
var imgurlreq:URLRequest=new URLRequest(menuArray[num]);
imageLoader.load(imgurlreq);
imageLoader.x=0;
imageLoader.y=50;
addChild(imageLoader);
}

var currentSelectedNum:uint=0;



function xClickPre(evt:MouseEvent):void {
if(currentSelectedNum>0){
currentSelectedNum--;
baseClick(currentSelectedNum);
}
trace(currentSelectedNum);
}


function xClickNext(evt:MouseEvent):void {
if(currentSelectedNum<menuArray.length-1){
currentSelectedNum++;
baseClick(currentSelectedNum);
}
trace(currentSelectedNum);
}


XMLファイルはこちらです!!-------------*

<?xml version="1.0" encoding="UTF-8" ?>
<data>
<shurui image="tekito1.swf" />
<shurui image="tekito2.swf" />
</data>

----------------------------------------*

ほんとうに恐縮です
宜しくお願いをいたします!!!!

ひろゆき
Åê¹ÆNo.43597
投稿日時: 2009-10-4 8:50
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: (XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
まず、xml自体に要素が2つしかないので、
menuArray[2], menuArray[3] がそもそも存在しません。

なので、表示のしようがありません。


次に、tekito1.swf, tekito2.swf の表示はきちんと行われています。
それを確認するためには、tekito2.swf に色をつけて、確認してみてください。
例えば、文字部分を赤の塗りにするとか。


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

えり
Åê¹ÆNo.43598
投稿日時: 2009-10-4 9:50
新米
居住地:
投稿: 23
使用環境:
win,mac
Flash CS4
Re: (XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
mayor さまへ*
お忙しい中でご回答ありがとうございます!!



>まず、xml自体に要素が2つしかないので、
>menuArray[2], menuArray[3] がそもそも存在しません。


はい!menuArray[1]まででございます!すみませんでした


>次に、tekito1.swf, tekito2.swf の表示はきちんと行われています。
>それを確認するためには、tekito2.swf に色をつけて、確認してみてください。

修正いたし確認いたしました!!
http://hmatrix.sakura.ne.jp/xml_simple/tameshi.html

tekito1.swf:白字、tekito2.swf :赤字にいたしたところ、tekito1.swfから入れ替わらず上書きでtekito2.swf の読み込みが、さらにされてしまっている事がわかりました。。。


なぜ、 baseClick(引数はnum)が実行される度に、
変数currentSelectedNumが再度代入され、XMLの配列要素が、上書きされず入れ替わってくれないのでしょうか。。



本当にすみません!!!!!!!!!!!!!











ひろゆき
Åê¹ÆNo.43599
投稿日時: 2009-10-4 9:52
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: (XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
引用:
なぜ、 baseClick(引数はnum)が実行される度に、
変数currentSelectedNumが再度代入され、XMLの配列要素が、上書きされず入れ替わってくれないのでしょうか。。

「入れ替わってくれない」のではなく、「入れ替えるようにしていない」ですね。

複数のことを組み合わせたものを作られる前に、
単純に、外部SWFを読み込むだけのものを作るとか、
もう少し、理解を深めてから、作成した方がよろしいのでは?

[AS3.0] 外部画像を読み込む (1)


同じ場所に、外部SWFを表示したいのであれば、
Loaderを何度も生成する必要はないように思います。
# 何度も生成することで、今回の問題が発生しているとも言えます。
var menuArray:Array = new Array();
var currentSelectedNum:uint = 0;
var xmlLoader:URLLoader = new URLLoader();
var myurl:URLRequest = new URLRequest("menu.xml");
var imageLoader:Loader = new Loader();
imageLoader.x = 0;
imageLoader.y = 50;
addChild(imageLoader);

xmlLoader.addEventListener(Event.COMPLETE, xComplete);
xmlLoader.load(myurl);

function xComplete(evt:Event):void {
	var menuXML:XML = new XML(xmlLoader.data);
	for each (var property:XML in menuXML.shurui) {
		menuArray.push(property.@image);
	}
	baseClick(currentSelectedNum);
}

btn_ue.addEventListener(MouseEvent.CLICK,xClickPre);
btn_shita.addEventListener(MouseEvent.CLICK,xClickNext);

function baseClick(num:uint):void {
	var imgurlreq:URLRequest = new URLRequest(menuArray[num]);
	imageLoader.load(imgurlreq);
}
function xClickPre(evt:MouseEvent):void {
	if(currentSelectedNum > 0) {
		currentSelectedNum--;
		baseClick(currentSelectedNum);
	}
}
function xClickNext(evt:MouseEvent):void {
	if(currentSelectedNum < menuArray.length-1){
		currentSelectedNum++;
		baseClick(currentSelectedNum);
	}
}


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

えり
Åê¹ÆNo.43600
投稿日時: 2009-10-4 10:03
新米
居住地:
投稿: 23
使用環境:
win,mac
Flash CS4
Re: (XMLデータ読み込み系コンテンツ)_XMLの配列がうまく適応できません。。。
mayor さまさまさまさま!!!!!!


いきなり出来ました!!


>Loaderを何度も生成する必要はないように思います。

すいません・・・なるほどです!!
毎回毎回Loaderオブジェクト生成せず、URLRequestオブジェクトを
生成するだけにいたさねば、何個も何個もLoaderオブジェクトが
乗ってきてしまいますね!!!


な・る・ほ・ど・で・・・す・・(初心者の雄叫び)


currentSelectedNumにつきましても、なにもcurrentSelectedNum(0)とxComplete()内に記述しておかなくとも、

var currentSelectedNum:uint = 0;
と宣言しておけばよろしいですね!!

すっきりいたしました!!

クラスの生成近辺、良く修行いたします!!
ありがとうありがとうございました!!!!








スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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