请问如何获取某一点的颜色?

var _self=this; //这是一个cc.Sprite
var spriteSize = _self.getContentSize();
var renderTexture = new cc.RenderTexture(spriteSize.width, spriteSize.height, cc.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);
renderTexture.beginWithClear(0, 0, 0, 0);
//renderTexture.begin();
_self.visit();
var colors=new Uint8Array(4);
gl.readPixels(pos.x, pos.y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE,colors );

console.log(colors);

renderTexture.end();
上面的代码无法获取正确的颜色值,原因是因为cocos2dx 底层在3.x以后改为队列模式渲染了,当visit的时候根本就只是将这个动作放在要做的事情队列里面,当end后不知道什么时候处理一下。所以获取不到图。有谁在js方面解决了这个问题,麻烦分享下经验吧。

刚好看到版主的代码:

获取指定位置的像素
readPixels:function(x,y,w,h) {
if( ‘opengl’ in cc.sys.capabilities) {
var size = 4 * w * h;
var array = new Uint8Array(size);
gl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, array);
return array;
} else {
// implement a canvas-html5 readpixels
return cc._renderContext.getImageData(x, winSize.height-y-h, w, h).data;
}
},

测试代码
var spriteTemp = new cc.Sprite(res.HelloWorld_png);
this.addChild(spriteTemp);

    var self = this;
    cc.eventManager.addListener({
        event: cc.EventListener.MOUSE,
        onMouseUp: function(event){
            var pixelArr = self.readPixels(10, 10, 1, 1);
            cc.log(pixelArr);
        }
    }, spriteTemp);

上面的代码在JSB里是无法获得正确的值得,必须修改下C++代码才可以拿到。。 我已经通过C++的方法获得。 要想知道的人可以搜我发在论坛里的帖子,可能在其他版块。