收藏
回答

相机销毁后,第二次创建相机onCameraFrame回调函数不执行

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug Camera.onCameraFrame() 微信iOS客户端 7.0.12 2.11.0 2.10.4 2.11.1
    startShowCamera() {
        if (cc.sys.platform === cc.sys.WECHAT_GAME) {
            var size = "small"
            if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.MID) {
                size = "medium"
            }
            else if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.HIGH) {
                size = "large"
            }

            var camera = wx.createCamera({
                x: 0,
                y: 0,
                width: 1,
                height: 1,
                devicePosition: "front",
                size: size,
                success: () => {
                    cc.log("CameraDisplay startShowCamera Success")
                    this.startListener()
                    this.m_openCb && this.m_openCb()
                },
                fail: (err) => {
                    cc.log("CameraDisplay startShowCamera Fail", err)
                }
            })

            this.m_camera = camera
        }
    },

    closeCamera() {
        if (this.m_camera) {
            if (cc.sys.platform === cc.sys.WECHAT_GAME) {
                this.m_camera.destroy()
                this.m_camera = undefined
            }
        }

        this.fullSp.node.active = false
        this.quarterSp.node.active = false
        this.m_tex = undefined
    },

    startListener() {
        var camera = this.m_camera
        camera.onCameraFrame((frameObj) => {
            if (this.m_tex) {
                var data = new Uint8Array(frameObj.data)
                this.m_tex.initWithData(data, cc.Texture2D.PixelFormat.RGBA8888, frameObj.width, frameObj.height)
                this.m_tex.handleLoadedTexture()
            }
        })

        camera.listenFrameChange()
    }


代码如上图所示,我每次调用startShowCamera开启相机后,使用完成会destroy销毁,中间需要调用onCameraFrame监听帧变化。

只有第一次调用后,能监听到onCameraFrame回调函数帧变化,相机销毁后再次创建新的相机再也无法监听到帧数据。

我这边能确认的是,wx.createCamera函数调用后,每次都有success回调,也就是我的startListener函数里面的listenFrameChange这些都是执行了。但是不起作用。而且我能确认摄像头确实是打开的


最后一次编辑于  2020-05-31
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签