mirror of
https://github.com/tiennm99/fbird.git
synced 2026-06-15 10:47:52 +00:00
101 lines
2.8 KiB
JavaScript
Vendored
101 lines
2.8 KiB
JavaScript
Vendored
|
|
gaf.Sprite = gaf.Object.extend
|
|
({
|
|
_className: "GAFSprite",
|
|
|
|
_hasCtx: false,
|
|
_hasFilter: false,
|
|
|
|
ctor : function(gafSpriteProto, usedScale)
|
|
{
|
|
this._super(usedScale);
|
|
cc.assert(gafSpriteProto, "Error! Missing mandatory parameter.");
|
|
this._gafproto = gafSpriteProto;
|
|
},
|
|
|
|
// Private
|
|
|
|
_init : function()
|
|
{
|
|
var frame = this._gafproto.getFrame();
|
|
cc.assert(frame instanceof cc.SpriteFrame, "Error. Wrong object type.");
|
|
|
|
// Create sprite with custom render command from frame
|
|
this._sprite = new cc.Sprite();
|
|
this._sprite._renderCmd = this._gafCreateRenderCmd(this._sprite);
|
|
this._sprite.initWithSpriteFrame(frame);
|
|
|
|
this._sprite.setAnchorPoint(this._gafproto.getAnchor());
|
|
this.addChild(this._sprite);
|
|
//this._sprite.setCascadeColorEnabled(true);
|
|
//this._sprite.setCascadeOpacityEnabled(true);
|
|
this._sprite.setOpacityModifyRGB(true);
|
|
|
|
if(cc._renderType === cc.game.RENDER_TYPE_WEBGL)
|
|
this._sprite.setBlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
},
|
|
|
|
_applyState : function(state, parent)
|
|
{
|
|
this._applyStateSuper(state, parent);
|
|
if(this._needsCtx)
|
|
{
|
|
// Enable ctx state if wasn't enabled
|
|
if(!this._hasCtx)
|
|
{
|
|
this._enableCtx();
|
|
this._hasCtx = true;
|
|
}
|
|
// Set ctx shader
|
|
this._applyCtxState(state);
|
|
}
|
|
else
|
|
{
|
|
// Disable ctx state if was enabled
|
|
if(this._hasCtx)
|
|
{
|
|
this._disableCtx();
|
|
this._hasCtx = false;
|
|
}
|
|
// Apply color
|
|
if(!cc.colorEqual(this._sprite._realColor, this._cascadeColorMult))
|
|
{
|
|
this._sprite.setColor(this._cascadeColorMult);
|
|
}
|
|
// Apply opacity
|
|
if(this._sprite.getOpacity() != this._cascadeColorMult.a)
|
|
{
|
|
this._sprite.setOpacity(this._cascadeColorMult.a);
|
|
}
|
|
|
|
}
|
|
},
|
|
|
|
_enableCtx: function()
|
|
{
|
|
this._sprite._renderCmd._enableCtx();
|
|
},
|
|
|
|
_disableCtx: function()
|
|
{
|
|
this._sprite._renderCmd._disableCtx();
|
|
},
|
|
|
|
_applyCtxState: function(state){
|
|
this._sprite._renderCmd._applyCtxState(this);
|
|
},
|
|
|
|
getBoundingBoxForCurrentFrame: function ()
|
|
{
|
|
var result = this._sprite.getBoundingBox();
|
|
return cc._rectApplyAffineTransformIn(result, this.getNodeToParentTransform());
|
|
},
|
|
|
|
_gafCreateRenderCmd: function(item){
|
|
if(cc._renderType === cc.game.RENDER_TYPE_CANVAS)
|
|
return new gaf.Sprite.CanvasRenderCmd(item);
|
|
else
|
|
return new gaf.Sprite.WebGLRenderCmd(item);
|
|
}
|
|
});
|