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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     クラス間のデータのやり取りについて
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
balance
Åê¹ÆNo.33285
投稿日時: 2007-5-9 15:31
半人前
居住地:
投稿: 31
使用環境:
クラス間のデータのやり取りについて
毎回お世話になっています。

今回、クラス間のデータのやり取りで、つまづいてしまいました。

今回の目的は、指定したxmlノードのデータを
traceしようとすることです。

以下のxmlデータを読み込み、処理しようとしています。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item>
	<image>sample.jpg</image>
</item>

クラスは2つ用意しています。

XMLを読み込むクラス
XMLLoader.as
class XMLLoader
{
	static function loadXML(parse:Function , callBack:Function )
	{
		var image_xml:XML = new XML();
		image_xml.ignoreWhite = true;
		
		image_xml.onLoad = function()
		{
			var data = parse( this );
			callBack( data ) ;
		}
		image_xml.load("xml/image.xml");
	}
}

先ほどのXMLLoaderクラスを使って指定したノードをtraceするクラス
Init.as
import XMLLoader;

class Init
{
	function Init()
	{
		XMLLoader.loadXML( parse , setData );
	}

	private function parse( xml:XML )
	{
		//指定したノードを返す。
		return xml.firstChild.childNodes;
	}

	private function setData( obj:Object ){
		//取得したノードをtraceする。
		trace( obj );		
	}
}

flaファイルの_root第一フレームには
var init_obj = new Init();


と書いてあります。
これでInitクラスを実行させ、XMLLoaderクラスから
データを取りにいっています。

これでも指定したノードのデータをtraceできますが、


次の例のように、


Init.as
import XMLLoader;

class Init
{
	function Init()
	{
		var data_obj = XMLLoader.loadXML( parse );
		trace(data_obj);			
	}

	private function parse( xml:XML )
	{
		//指定したノードを返す。
		return xml.firstChild.childNodes;
	}
}

とし、XMLLoader.loadXMLを実行するだけで
値を返してくれて、data_objに指定ノードを格納したいのです。
その為に、下記のようにXMLLoaderクラスを書き直しました。

XMLLoader.as
class XMLLoader
{
	static function loadXML(parse:Function )
	{
		var image_xml:XML = new XML();
		image_xml.ignoreWhite = true;
		
		var target:Object = this;
		var obj:Object;
		
		image_xml.onLoad = function()
		{
			target.obj = parse( this );
		}
		image_xml.load("xml/image.xml");
		return obj;
	}
}

しかし、これでは

---------------実行結果--------------------
このスコープから 'this' にアクセスできません。
var target:Object = this;
-------------------------------------------

このようにエラーが出てしまいます。
エラーがなくても、returnするタイミングが
おかしいかと思います。


どのようにすれば正しくreturnし、
Initクラスから
XMLLoader.loadXMLで呼び出し、
正しく値を返してくれるのでしょうか。

かなり長くなってしまいました。
よろしくお願いします。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » クラス間のデータのやり取りについて balance 2007-5-9 15:31
     Re: クラス間のデータのやり取りについて nekoyuki 2007-5-9 15:59
       Re: クラス間のデータのやり取りについて balance 2007-5-9 17:57
         Re: クラス間のデータのやり取りについて Fumio 2007-5-9 21:00
           Re: クラス間のデータのやり取りについて balance 2007-5-11 15:41
             Re: クラス間のデータのやり取りについて mayor 2007-5-11 16:50
               Re: クラス間のデータのやり取りについて balance 2007-5-11 18:19
             Re: クラス間のデータのやり取りについて Fumio 2007-5-14 0:21
               Re: クラス間のデータのやり取りについて balance 2007-5-14 19:06

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