标题 ##【cocos2d-js】2.创建单一颜色精灵
一般的精灵都是需要伴随一张图片的,单一颜色的布局的话只能用cc.LayerColor,显然有些场合不合适,比如ProccessTimer的参数必须是个精灵,所以有时候单一颜色精灵还是有些用的。由于网页上和手机的不同,这里我写了两个方法,其中网页的方法是借用外国人的,然而他给我的代码是cocos2d-x的,所以也算自创啦~\(≧▽≦)/~。
网页端:
/**
* 仅WEB可用
* @param size
* @returns {___anonymous695_700}
*/
blankSpriteWithSize : function(size) {
var sprite = new cc.Sprite();
var buffer = new Uint8Array(4);
for (var i=0;i<4;i++) {
buffer[i] = 255;
}
var tex = new cc.Texture2D();
tex.initWithData(buffer, cc.Texture2D.PIXEL_FORMAT_RGBA8888, 1, 1, size);
sprite.texture = tex;
sprite.setTextureRect(cc.rect(0, 0, size.width, size.height));
return sprite;
}
代码很容易理解,就是用颜色画个纹理,再贴给精灵。不同颜色只要修改buffer的值就行了。
手机端:
/**
* 创建单一颜色的精灵
* @param size {cc.Size} 尺寸
* @param color {cc.Color} 颜色
* @returns {cc.Sprite}
*/
colorSprite = function(size, color) {
var render = new cc.RenderTexture(size.width, size.height);
render.beginWithClear(color.r, color.g, color.b, color.a);
render.visit();
render.end();
return new cc.Sprite(render.getSprite().texture);
}
原理就是用RenderTexture采取某种颜色来清理,清理完后返回。代码看起来很简单,重点是思路。