0

我用谷歌搜索 _ctx is Null,我很震惊地发现没有与 Android 相关的内容。如果我们找到正确的答案,我希望这个姿势会对某人有所帮助。

这是我正在使用的 ANE 的链接:https ://github.com/pozirk/AndroidInAppPurchase

我不知道从这里去哪里。它曾经有效,现在无效。:(

我正在尝试使用 Pozirk 的 InAppPurchase.ane - 我以前使用过但突然它不起作用。我不确定发生了什么变化。可能是 ANE,或者 google play 中的某个东西。不确定,但现在它不起作用,我不断收到此错误:

_ctx 为空。TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 com.pozirk.payment.android::InAppPurchase/init()[C:\Users\blah\blah\Android\com\pozirk\payment\android\InAppPurchase.as:46] 在这里WeGo_fla::MainTimeline/fl_MouseClickHandler() [hereWeGo_fla.MainTimeline::frame1:97]

    import com.pozirk.payment.android.InAppPurchase;
    import com.pozirk.payment.android.InAppPurchaseEvent;
    import flash.display.MovieClip;

    /**
     * ...
     * @author Ben Barnard
     */

         var _iap:InAppPurchase;


            _iap = new InAppPurchase();

            _iap.addEventListener(InAppPurchaseEvent.INIT_SUCCESS, onInitSuccess);
            _iap.addEventListener(InAppPurchaseEvent.INIT_ERROR, onInitError);

            _iap.addEventListener(InAppPurchaseEvent.PURCHASE_SUCCESS, onPurchaseSuccess);
            _iap.addEventListener(InAppPurchaseEvent.PURCHASE_ALREADY_OWNED, onPurchaseSuccess);
            _iap.addEventListener(InAppPurchaseEvent.PURCHASE_ERROR, onPurchaseError);

            _iap.addEventListener(InAppPurchaseEvent.CONSUME_SUCCESS, onConsumeSuccess);
            _iap.addEventListener(InAppPurchaseEvent.CONSUME_ERROR, onConsumeError);

            _iap.addEventListener(InAppPurchaseEvent.RESTORE_SUCCESS, onRestoreSuccess);
            _iap.addEventListener(InAppPurchaseEvent.RESTORE_ERROR, onRestoreError);

            // Liscense Key




         function onRestoreError(e:InAppPurchaseEvent):void 
        {
            trace("Restore Error - " + e.toString());
            outputField.text = "Restore Error - " + e.toString() + e.data.toString();
        }

         function onConsumeError(e:InAppPurchaseEvent):void 
        {
            trace("Consume Error - " + e.toString());
            outputField.text = "Consume Error - " + e.toString() + e.data.toString();
        }

         function onConsumeSuccess(e:InAppPurchaseEvent):void 
        {
            trace("Consume Success - " + e.toString());
            outputField.text = "Consume Success - " + e.toString();

            // ------------------------------- THIS LINE PROMPTS THE USER TO PURCHASE THE ITEM ------------------------------- //
            _iap.purchase("android.test.purchased", InAppPurchase.TYPE_INAPP);
        }

         function onPurchaseError(e:InAppPurchaseEvent):void 
        {
            trace("Purchase Error - " + e.toString());
            outputField.text = "Purchase Error - " + e.toString();
        }

         function onRestoreSuccess(e:InAppPurchaseEvent):void
        {
            trace("Restore Success - " + e.toString());

            // ------------------------------- THIS LINE CONSUMES THE "TEST" ITEM ------------------------------- //
            _iap.consume("android.test.purchased");
        }

         function onPurchaseSuccess(e:InAppPurchaseEvent):void 
        {
            trace("Purchase Successful - " + e.data.toString());
            outputField.text = "Purchase Successful - " + e.data.toString();
        }

         function onInitError(e:InAppPurchaseEvent):void 
        {
            trace("Init Error - " + e.toString());
            outputField.text = "Init Error - " + e.toString();
        }

         function onInitSuccess(e:InAppPurchaseEvent):void 
        {
            trace("Init Success - " + e.toString());
            outputField.text = "Init Success - " + e.toString();

            // ------------------------------- THIS LINE RESTORES ALL PURCHASED ITEMS ------------------------------- //
            //_iap.restore(InAppPurchase.TYPE_INAPP);
        }




    init.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void
{
    _iap.init("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiM0Lpjf/S5JQOh0L5c3IQNawziFTT9WeJ9fAmQl5nXJdfVnRK9+mMCnHJlKz8omt9RljlrtLpOV4iy+/KUFgtZ/SCvF+Brpk9lAEe+SbifT2mNGNKgF3tCXSHTXX2Xuq9kw1CR0bDy0Jf36LE04zBo4jYV4RcWQ66ViS2JbTEXAugG5S71z+CJXo6o5uYG/mRZlHFRJkpp1ufDFg4dp8r2ApN3RXhMv9Rl3NCcwTk3R0/rmwCc80Uy94kX7hkgeBuj/AViFZMbzYzY8YLdx80cYYHPc/ofecXmCl6OorJiBC+GiMs/vBoyjr4EGeIqfp1WdZrxeaJzMzAWPNoY4mSwIDAQAB");
}


purchase.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);

function fl_MouseClickHandler_2(event:MouseEvent):void
{
    //_iap.restore(InAppPurchase.TYPE_INAPP);
    _iap.purchase("android.test.purchased", InAppPurchase.TYPE_INAPP);
}


consume.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_3);

function fl_MouseClickHandler_3(event:MouseEvent):void
{
    //_iap.restore(InAppPurchase.TYPE_INAPP);
    _iap.consume("android.test.purchased");
}

restore.addEventListener(MouseEvent.CLICK, rLove);

function rLove(event:MouseEvent):void
{
    //_iap.restore(InAppPurchase.TYPE_INAPP);
    _iap.restore(InAppPurchase.TYPE_INAPP);
}
4

2 回答 2

0

您没有正确地将 ANE 文件添加到您的项目中。已经提出并回答了这个问题: http: //inside.pozirk.com/2013/02/18/adobe-air-in-app-purchase-native-extensions/#comment-87 http://inside.pozirk。 com/2013/02/18/adobe-air-in-app-purchase-native-extensions/#comment-89

于 2013-09-07T16:39:18.837 回答
0

我的清单,在修补 FlashBuilder 2 小时后:

1)“项目”>属性>动作脚本构建路径>本机扩展>添加ANE>“添加InAppPurchase.ane”

2)“项目”>“属性”>“ActionScript 构建打包”>“Google Android”>“本机扩展”>“选择包 InAppPurchase.ane”

3) ... AS3 代码使用应用内购买 API ...

4) 如果您尝试在调试模式下使用 ANE,它似乎会失败;应该使用导出的 APK。

5) FlashBuilder > 项目 > 导出发布版本:

  • 验证 ANE 是否包含在包中(本机扩展)
  • 验证您使用的是正确的签名证书。

6) 将创建的 APK 复制到 Android 设备。

7) 使用文件资源管理器安装 APK。

8)应用程序最终运行,而不是在启动时崩溃/挂起。

于 2014-09-02T12:42:40.103 回答