2011-07-29 24 views
0

フラッシュが初めてです。私は、このフラッシュコードをFlexでSWFローダーを使用して呼び出しました。私は次のエラーを受け取りました。ここで私はheader_text_flaのためのフラッシュコーディングを付けています。TypeErrorを解決する方法:エラー#1009:flexオブジェクトからswfを呼び出すときにnullオブジェクト参照のプロパティまたはメソッドにアクセスできません。

TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。ニースのコード:-) header_text_fla :: MainTimeline/loaderComplete()で

var myEvent:Event; 
var myParams:LoaderInfo; 
function loaderComplete(myEvent:Event) 
{ 
if(this.loaderInfo.parameters.text1 != null) 
{ 
Text1.text=this.loaderInfo.parameters.text1 as String; 
} 
if(this.loaderInfo.parameters.text2 != null) 
{ 
Text2.text=this.loaderInfo.parameters.text2 as String; 
} 
if(this.loaderInfo.parameters.text3 != null) 
{ 
Text3.text=this.loaderInfo.parameters.text3 as String; 
} 
} 

function useParams() 
{ 

} 

var myLoaderInfo=new Object(); 
myLoaderInfo.myParamsLoaded=false; 
myLoaderInfo.loaderComplete=loaderComplete; 
myLoaderInfo.useParams=useParams; 

this.loaderInfo.addEventListener(Event.COMPLETE, myLoaderInfo.loaderComplete); 
+0

コードは非常に混乱しています。あなたは 'myLoaderInfo'と 'loaderInfo'への参照を使用しています。下の6行のコードも、私を混乱させるようなものにはカプセル化されていないようです。変数の宣言は、関数にカプセル化されていないと受け入れられますが、プロパティsettersとeventlistenerの登録は、そのようにカプセル化されていてはいけません。 –

+0

デバッガが担当している行を教えてください。あなたがここにアクセスしていることは、これをスローするものがたくさんありますが、これは責任コードではないかもしれません。このため、コンパイラ/デバッガは、エラーが発生した場所の行参照または少なくともブロック参照を与えます。 –

+0

これは、flexvからflashvarsデータを取得するために使用され、swfで使用されました。 – James

答えて

1

はコード

try 
{ 
    Text1.text=this.loaderInfo.parameters.text1 as String; 
    Text2.text=this.loaderInfo.parameters.text2 as String; 
    Text3.text=this.loaderInfo.parameters.text3 as String; 
} 
catch(error:Error) 
{ 
    trace("Error"); 
} 
+0

エラーは何を表示しますか? –

+0

TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません – James

0

入力してください:

function loaderComplete(myEvent:Event) 
{ 
if (!this.loaderInfo) trace ("no loader info"); 
if (!this.loaderInfo.parameters) trace ("no loader info parameters"); 
if (!Text1) trace ("no Text1"); 
if (!Text2) trace ("no Text2"); 
if (!Text3) trace ("no Text3"); 
... 
YOUR CODE HERE 
... 

をこれはあなたに初期化され、スローされたエラーについては責任を負いませんされているオブジェクトを提供します。

+0

変更はありませんでした.......... :( – James

0

一時的なオブジェクトの(myLoaderInfo)関数をイベントハンドラとして使用していることが問題になることがあります。オブジェクトは一時的です(または、少なくとも上記のコードのように見える)ので、イベントは非同期で送信されるため、ファンクションがコールされる前にガベージコレクタがmyLoaderInfoインスタンスをクリーンアップして、nullにしてコールバック関数が呼び出されます。

は、あなたのmyLoaderInfoクラス・パラメータを作ってみましょう:

var myEvent  : Event; 
var myParams  : LoaderInfo; 
var myLoaderInfo : Object;//added myLoaderInfo here 

function loaderComplete(myEvent:Event) 
{ 
    if(this.loaderInfo.parameters.text1 != null) 
    { 
     Text1.text=this.loaderInfo.parameters.text1 as String; 
    } 
    if(this.loaderInfo.parameters.text2 != null) 
    { 
     Text2.text=this.loaderInfo.parameters.text2 as String; 
    } 
    if(this.loaderInfo.parameters.text3 != null) 
    { 
     Text3.text=this.loaderInfo.parameters.text3 as String; 
    } 
} 

function useParams() 
{ 
} 

myLoaderInfo = new Object(); 
myLoaderInfo.myParamsLoaded = false; 
myLoaderInfo.loaderComplete = loaderComplete; 
myLoaderInfo.useParams  = useParams; 

this.loaderInfo.addEventListener(Event.COMPLETE, myLoaderInfo.loaderComplete); 

そのように、ガベージコレクタはそれをクリーンアップしません。私はcatch.Hereをしようと使用して解決してきた

+0

コードには何も効果がありません。 .. :( – James

関連する問題