2012-02-18 12 views
1

文字列と数値の連結に基づいて、クラスを初期化しようとしています。 すべての私のクラスは公開されています。動的クラスの開始AS3

これは私のコードです:

public function setCurrentPath(pathNumber:String) 
    { 
     var pth_class:Class = getDefinitionByName('Pth'+pathNumber) as Class; 
     var pth:MovieClip = new pth_class(); 
     addChild(pth) 
     pth.getXY(); 


    } 

ので - 私は、エラー#1065を取得。

助けが必要ですか?

はい、私は私のクラスファイルインポートflash.utilsにアップしています。*

+0

私は私がエラーを取得すると思います'var pth_class:Class = getDefinitionByName(' Pth '+ pathNumber)をクラスとして使用します。すべての質問に答える –

+0

私はトレース( "Pth" +パス番号) "Pth1"それはクラスではない文字列 –

答えて

2

があなたのpth_class変数はnullですか?

その場合は、理由のカップルが存在し、これがケースかもしれません:

1)あなたは、入力クラスの正しい完全修飾クラス名を持っていません。例えばcom.myClasses.Pth1

または

2)

あなたが動的にこのようなクラスをinstanciatingしていると、このような何とか=新しいPTH1としてクラスには他の「通常の」参照((存在しない場合)) "Pth1"クラスはコンパイルプロセスに含まれません。この問題を回避するには

私はあなたがこれらのクラスをコンパイルするか、手動で既存のコードでそれらへの参照を含めることができ、それを強制するために、コンパイラに引数を指定することができると思う:

p1:Pth1; 
p2:Pth2; 
+0

私はトレース(getDefinitionByName( "Pth1"))を使用する場合はまだ –

+1

を動作しません "Pth1 "クラス。 トレースを使用する場合(getDefinitionByName( "Pth" + pathNumber))、エラーが発生します。 文字列 '1'をpathNumberに渡しています。 –

+0

私は引数が文字列ではない数値でなければならないと思っています。だからpathNumber(文字列)に '1'を渡していたので、numberに変換して動作します:) –

関連する問題