【问题标题】:How to get Sprite pixel alpha information in cocos2d js/c++cocos2d js/c++中如何获取Sprite像素alpha信息
【发布时间】:2017-06-13 11:45:30
【问题描述】:

我正在开发一个从头到尾的游戏,为此我使用了 Clipper 节点。 但是我想知道整个精灵被剪辑时的事件?

有没有其他方法知道,请帮帮我

【问题讨论】:

    标签: cocos2d-x-3.0 cocos2d-js


    【解决方案1】:
    I solved this issue by using following method:-
    
    I create one rendure texture and add an sprite on it. 
    
    I found answer here:- http://discuss.cocos2d-x.org/t/render-texture-get-percentage-of-transparent/21123  
    here is the code:-
    
      var WINDOW_WIDTH = cc.director.getWinSize().width;
    
      var WINDOW_HEIGHT = cc.director.getWinSize().height;
    
      rt = new cc.RenderTexture(WINDOW_WIDTH, WINDOW_HEIGHT, 
      sprite.getTexture().getPixelFormat());
      rt.setPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
      this.addChild(rt, 5);
    
    getPercentageTransparent: function () {
            //
            var s = rt.getSprite().getContentSize();
            var tx = s.width;
            var ty = s.height;
    
            var bitsPerPixel = 4 * 8;
            var bytesPerPixel = bitsPerPixel / 8;
            var bytesPerRow = bytesPerPixel * tx;
            var myDataLength = bytesPerRow * ty;
    
            var numberOfPixels = tx * ty;
            var numberOfTransparent = 0;
    
            var rawImagePixels = new Uint8Array(myDataLength);
            rt.begin();
            gl.readPixels(0, 0, tx, ty, gl.RGBA, gl.UNSIGNED_BYTE, rawImagePixels);
            rt.end();
    
            var x, y;
    
            for (y = 0; y < ty; y++) {
                // just want the last byte (alpha) for each pixel
                for (x = 0; x < tx; x++) {
                    var alpha = rawImagePixels[(y * 4 * tx + ((x * 4) + 3))];
    
                    if (alpha < 1) {
                        numberOfTransparent++;
                    }
                }
            }
            cc.log("Number of pixels" + numberOfPixels);
            cc.log("Number of Trasparent" + numberOfTransparent);
            cc.log("percentage " + (numberOfTransparent / numberOfPixels) * 100);
            return (numberOfTransparent / numberOfPixels) * 100;
        },
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多