Cc.LayerColor 在场景中无法显示

尝试在场景中创建一个有色的层:

// test.js :

cc.Class({
    extends: cc.Component,
    properties: {},
    onLoad: function () {
        this._layer = new cc.LayerColor(cc.color(255, 255, 0, 255), 200, 200);
        this.node._sgNode.addChild(this._layer);
    }
});

然后将这个脚本挂载到场景中的一个 node 节点上。

场景的结构:

+ canvas
    + aNode ( 挂载 test.js )

程序运行后没有看到任何的图层显示。

我尝试着在创建layer后打印了一下,显示 position,width, height, color 都是没有问题的。

很想知道这个是什么原因呢?

PS:
我知道可以创建一个单色的sprite来实现同样的效果,但是由于不想引入额外的资源文件,cc.LayerColor 是最好的方案。
此外 cc.DrawNode 之类的也可以达到效果,但是由于我之后会在 layer 中添加一些 shader效果的处理,所以 cc.DrawNode 之类的也不是好的解决方案。

用cc.Graphics组件画个矩形填个色就行了。

这样是可以的,就像用 cc.DrawNode 一样,但是如果是 cc.LayerColor 的话,我可以对其进行 shader的特效处理,如:

this._shaderProgram = new cc.GLProgram("xxx.vsh", "xxx.fsh");
this._shaderProgram.link();
this._shaderProgram.updateUniforms();
this._layer.setShaderProgram(this._shaderProgram);

this._program = this._shaderProgram.getProgram();
// ......
this._shaderProgram.use();

但是 cc.Graphics 应该就不行了吧。