let _textureIdMapRenderTexture = {}
cc.Class({
    extends: cc.Component,

    properties: {
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        this.node._hitTest = this.hitTest.bind(this)
    },

    start() {


    },

    hitTest(location) {
        let spriteFrame = this.node.getComponent(cc.Sprite).spriteFrame
        if (spriteFrame == null) {
            return false
        }
        let posInNode = this.node.convertToNodeSpaceAR(location);
        let rect = spriteFrame.getRect();
        let offset = spriteFrame.getOffset();
        // var type = this.node.getComponent("DecorateItemPrefab").m_type
        // cc.log(type + "--", "xxxxxxxxxxxxxx", type)
        // cc.log(type + "--", "posInNode", posInNode)
        // cc.log(type + "--", "rect", rect)
        // cc.log(type + "--", "offset", offset)
        if ((posInNode.x < offset.x - rect.width / 2) || (posInNode.y < offset.y - rect.height / 2)
            || (posInNode.x > (offset.x + rect.width / 2)) || (posInNode.y > (offset.y + rect.height / 2))) {
            return false
        }
        else {
            let posInRect = cc.v2(parseInt(posInNode.x - offset.x + rect.width / 2), parseInt(posInNode.y - offset.y + rect.height / 2))
            // cc.log(type + "--", "posInRect",  posInRect)
            // cc.log(type + "--", "isRotated", spriteFrame.isRotated())

            let tex = spriteFrame.getTexture()

            cc.log('test', tex instanceof (cc.RenderTexture));
            var rt;
            if (tex instanceof (cc.RenderTexture)) {
                rt = tex;
            } else {
                rt = _textureIdMapRenderTexture[tex.getId()];
            }

            if (!rt) {
                rt = new cc.RenderTexture()
                rt.initWithSize(tex.width, tex.height)
                rt.drawTextureAt(tex, 0, 0)
                _textureIdMapRenderTexture[tex.getId()] = rt
            }

            // data就是这个texture的rgba值数组
            let data
            if (spriteFrame.isRotated()) {
                data = rt.readPixels(null, rect.x + posInRect.y, rect.y + posInRect.x, 1, 1)
                // cc.log(type + "--", "data", data, rect.x + posInRect.y, rect.y + posInRect.x)
            }
            else {
                data = rt.readPixels(null, rect.x + posInRect.x, rect.y + rect.height - posInRect.y, 1, 1)
                // cc.log(type + "--", "data", data, rect.x + posInRect.x, rect.y + rect.height - posInRect.y)
            }

            // console.log("值是", data[3]);
            //if ((data[0] <= 0 && data[1] <= 0 && data[2] <= 0) || data[3] <= 0) {
            if (data[3] <= 0) {
                return false
            }
            else {
                return true
            }
        }
    },

    onDestroy() {
        let spriteFrame = this.node.getComponent(cc.Sprite).spriteFrame
        if (spriteFrame == null) {
            return false
        }

        let tex = spriteFrame.getTexture()
        let id = tex.getId()
        if (_textureIdMapRenderTexture[id]) {
            _textureIdMapRenderTexture[id].destroy()
            delete _textureIdMapRenderTexture[id]
        }
    }


});