cocos2dx-quick 集成微信分享crash

集成微信分享,分享图片时crash

Lua代码

    local size = cc.Director:getInstance():getWinSize()
local texture = cc.RenderTexture:create(size.width, size.height,     cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888)
    texture:setPosition(cc.p(size.width/2, size.height/2))
    texture:begin()
    self.owner_var.root_node:visit()
    texture:endToLua()
    texture:saveToFile("share.png", cc.IMAGE_FORMAT_PNG)  

        local path = cc.FileUtils:getInstance():getWritablePath().."share.png"
        Utils.shareImageWxFriend(path) --调用java或者oc的分享功能

 

java代码

        String path = getSDCardDirectory()+"share.png";
        File destFile = new File(path);  
        if (destFile.exists()) {  
            Log.d("Weixin","delete"); 
            destFile.delete();
        }
        copyFile(image_path, path, true);
        Bitmap srcBmp = getBitmapFromFile(path);
        if (srcBmp != null) {
            Bitmap bmp = Bitmap.createBitmap(660, 500, Bitmap.Config.RGB_565);
            Canvas canvas = new Canvas(bmp);
            canvas.save();
            Paint p = new Paint();
            canvas.drawBitmap(srcBmp, new Rect(238, 70, 898, 570),
                new Rect(0, 0, 660, 500), p);
            canvas.restore();
            srcBmp.recycle();

            WXImageObject imgObj = new WXImageObject(bmp);       
            WXMediaMessage msg = new WXMediaMessage();
            msg.mediaObject = imgObj;
            
            Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
            bmp.recycle();
            msg.thumbData = bmpToByteArray(thumbBmp, true);

            SendMessageToWX.Req req = new SendMessageToWX.Req();
            req.transaction = buildTransaction("img");
            req.message = msg;
            req.scene = SendMessageToWX.Req.WXSceneSession;;
            mIWXAPI.sendReq(req);    
            AppActivity.m_activity.finish();
        } else {
            Log.d("weixin", "srcBmp is null");
        }

调用分享时偶发性的crash,经过分析发现是切换到后台时cocos还在进行绘制,尤其ios是不允许的,会杀掉进程

问题原因:

截图是异步的,不是马上完成的,所以应该等截图功能完成后,在进行分享,

 

解决办法:

local function share()

        local path = cc.FileUtils:getInstance():getWritablePath().."share.png"
        Utils.shareImageWxFriend(path) --调用java或者oc的分享功能

end

scheduler.performWithDelayGlobal(share, 1)

 

转载于:https://my.oschina.net/u/3342517/blog/856133

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值