ApplicationDomain.getDefinition在适用于iOS的Release Build中无效

时间:2013-07-03 13:43:07

标签: ios flex air

我正在加载一个外部SWF文件,并使用AIR 3.2 for iOS在我的Flex4.6中使用ApplicationDomain.getdefination(“Slide1”)来获取其中的嵌入内容。

当我在调试模式(快速)中编译时它工作正常但在发布模式(标准)中编译时在iPad上给出参考错误1065(参见下面的错误行*)。

感谢任何帮助/建议。

我的actionscript类中的示例代码如下所示: -

var request:URLRequest;
request = new URLRequest(strSwfPath);
var rslLoader:Loader = new Loader();
var appDom:ApplicationDomain = new ApplicationDomain( ApplicationDomain.currentDomain );
var loaderContext:LoaderContext = new LoaderContext(false,appDom);
loaderContext.allowLoadBytesCodeExecution = true;
rslLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSwfCompleteHandler, false, 0, true);
rslLoader.load(request, loaderContext);

//--
private var loadedAppDomain:ApplicationDomain;
public var embedClass:Class;
//--

private function loadSwfCompleteHandler(event:Event):void 
{
     loadedAppDomain = rslLoader.contentLoaderInfo.applicationDomain;
     embedClass = loadedAppDomain.getDefinition(slideName) as Class; // >>>>>>>>>>>>>>>>>>>>>>> *Error Line.
}

//--------------------- The code inside my external SWF looks like:-
package 

{
    import flash.display.Sprite;
    import flashx.textLayout.compose.ISWFContext;
    public class Slide1 extends Sprite implements ISWFContext  {

        [Embed("slide1/sldBg1.png", mimeType="image/png")]
        public static const bg:Class;
        public function callInContext(fn:Function, thisArg:Object, argsArray:Array, returns:Boolean=true):*{
             if (returns)
                     return fn.apply(thisArg, argsArray);
             fn.apply(thisArg, argsArray);
         }
    }
}

1 个答案:

答案 0 :(得分:2)

iOS App Store关于运行时代码的协议存在问题;所以这不会奏效。

Adob​​e有sort of work-around使这项工作成功。它是在AIR 3.6中引入的;因此,您必须升级AIR SDK。