2016-03-01 46 views
1

有没有办法使用多个上下文创建同一ANE扩展的多个实例?如何为同一个Adobe Air ANE扩展创建多个上下文

我已阅读文档,它说我可以,但我不明白如何。

此刻,如果我尝试创建扩展的新实例,则返回的数据会混淆(将来自一个实例的数据返回给另一个实例)。

这里是iOS的初始化器,我有:

FREObject init(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) 
{ 
    eventContext = ctx; 

    return NULL; 
} 

也许问题是,每次我打电话从ActionScript中init法,上下文正好被设置到最新一项的方法?

我也读过http://www.adobe.com/devnet/air/articles/extending-air.html,它指向我想要的场景 - 我创建的扩展和新环境之间的一对一关系。问题是我从ANE向AS发送一个空的FREByteArray对象,然后用数据填充数据 - 我没有处理上下文,所以我不能在这一步中区分它们。

任何指导都会非常有帮助,因为我可能不理解上下文的概念并滥用它们。

回答

0

您是否尝试过使用contextType?

在对象 -

typedef void (*FREContextInitializer)( 
    void*      extData, 
    const uint8_t*   contextType, 
    FREContext    context, 
    uint32_t*    numFunctionsToSet, 
    const FRENamedFunction** functionsToSet 
); 

在ActionScript

ExtensionContext.createExtensionContext(EXTENSION_ID, CONTEXT_TYPE) 

参考文献:

FREContextInitializer() Native C

ExtensionContext.createExtensionContext() ActionScript

+0

由于˚F或建议。上下文类型会有什么不同,因为我没有阅读它,而且根据上下文类型我没有不同的方法? – o15a3d4l11s2

+0

好,你可以在你的FREContextInitializer使用它,就好像条件 – Januartha

+1

'无效YourContextInitializer(void *的ctxData,常量uint8_t * ctxType,FREContext CTX,uint32_t的* numFuncToTest,常量FRENamedFunction ** funcToset) { * numFuncToTest = 1; (FRENamedFunction *)malloc(sizeof(FRENamedFunction)*(* numFuncToTest)); func [0] .name =(const uint8_t *)“init”; func [0] .functionData = NULL; ([[NSString stringWithUTF8String :(char *)ctxType] isEqual @“demo”]) {0} .function =&initOne; } else { func [0] .function =&initTwo; } * funcToset = func; }' – Januartha

相关问题