2017-09-12 7 views
0

私はライブラリにMovieClipを持っています。これはaddChildメソッドを通して動的にロードしています。ライブラリアイテムをコンパイルから除外する方法AS3

私が直面しています問題がある: -

私はいくつかの他のクラスといくつかのFLAので走るメイン・クラスを持っています。

メインクラスは、このオブジェクトをライブラリからロードするFLAのフレーム内のコードを呼び出すサブクラス関数を呼び出します。

このオブジェクトは、FLAのには存在しません。このオブジェクトは、コンパイル時にエラーが発生しました。

このを通して確認を試みたが失敗した:(

するvar classExist:ブール= isClassExists( "CTRL_ALARM");

関数isClassExists(クラス名:文字列、ドメイン:のApplicationDomain = null)を:ブール { VARの解像度:ブール;

if(domain) 
{ 
    res = domain.hasDefinition(className); 
} 
else 
{ 
    // res = getDefinitionByName(className); 
    //or the same 
    res = ApplicationDomain.currentDomain.hasDefinition(className); 
} 
trace(res); 
return res; 

}

私はO複製することができますどのような方法がありますステージでas3を処理するか、オブジェクトがライブラリに存在しない場合にオブジェクトをコンパイルしないように制限するにはどうすればよいですか?

答えて

0

以下を試してください。あなたのSWFのすべてが同じサンドボックス内にある場合は、それだけでうまくいくかもしれない:

import flash.utils.getDefinitionByName; 

var AlarmClass:Class = getDefinitionByName("CTRL_ALARM"); 
var anAlarm:DisplayObject = new AlarmClass; 

次に、でもサンドボックスの制限とそれを動作させるために、あなたがロードされたSWFを経由したい定義を求めることがあります。

// This should contain Loader objects with your loaded SWFs. 
var aList:Array; 

for each (aLoader:Loader in aList) 
{ 
    // Get reference to loaded app domain. 
    var aDomain:ApplicationDomain = aLoader.contentLoaderInfo.applicationDomain; 

    // Check if such a class is in that SWF. 
    if (aDomain.hasDefinition("CTRL_ALARM")) 
    { 
     var AlarmClass:Class = aDomain.getDefinition("CTRL_ALARM"); 
     var anAlarm:DisplayObject = new AlarmClass; 

     break; 
    } 
} 
関連する問題