Skip to content

Commit aef313a

Browse files
committed
add bmfont batch draw
1 parent 31837c0 commit aef313a

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

Diff for: cocos2d/labels/CCLabelBMFont.js

+25-3
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,14 @@ cc.LabelBMFont = cc.SpriteBatchNode.extend(/** @lends cc.LabelBMFont# */{
230230

231231
self._config = newConf;
232232
self._fntFile = fntFile;
233-
texture = cc.textureCache.addImage(newConf.atlasName);
233+
var spriteFrameBaseName = cc.path.basename(newConf.atlasName);
234+
var spriteFrame = cc.spriteFrameCache.getSpriteFrame(spriteFrameBaseName);
235+
if(spriteFrame) {
236+
texture = spriteFrame.getTexture();
237+
this._spriteFrame = spriteFrame;
238+
} else {
239+
texture = cc.textureCache.addImage(newConf.atlasName);
240+
}
234241
var locIsLoaded = texture.isLoaded();
235242
self._textureLoaded = locIsLoaded;
236243
if (!locIsLoaded) {
@@ -336,15 +343,30 @@ cc.LabelBMFont = cc.SpriteBatchNode.extend(/** @lends cc.LabelBMFont# */{
336343
rect.x += self._imageOffset.x;
337344
rect.y += self._imageOffset.y;
338345

346+
var isRotated = false;
347+
if(this._spriteFrame) {
348+
var textureWidth = locTexture.width;
349+
var spriteFrameRect = this._spriteFrame._rect;
350+
if(!this._spriteFrame._rotated) {
351+
rect.x = rect.x + spriteFrameRect.x;
352+
rect.y = rect.y + spriteFrameRect.y;
353+
} else {
354+
isRotated = true;
355+
var originalX = rect.x;
356+
rect.x = rect.y + spriteFrameRect.x;
357+
rect.y = originalX + spriteFrameRect.y;
358+
}
359+
}
360+
339361
var fontChar = self.getChildByTag(i);
340362

341363
if (!fontChar) {
342364
fontChar = new cc.Sprite();
343-
fontChar.initWithTexture(locTexture, rect, false);
365+
fontChar.initWithTexture(locTexture, rect, isRotated);
344366
fontChar._newTextureWhenChangeColor = true;
345367
this.addChild(fontChar, 0, i);
346368
} else {
347-
cmd._updateCharTexture(fontChar, rect, key);
369+
cmd._updateCharTexture(fontChar, rect, key, isRotated);
348370
}
349371

350372
// Apply label properties

Diff for: cocos2d/labels/CCLabelBMFontWebGLRenderCmd.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@
4242
this._node.setOpacityModifyRGB(this._node._texture.hasPremultipliedAlpha());
4343
};
4444

45-
proto._updateCharTexture = function(fontChar, rect, key){
45+
proto._updateCharTexture = function(fontChar, rect, key, isRotated){
4646
// updating previous sprite
47-
fontChar.setTextureRect(rect, false);
47+
fontChar.setTextureRect(rect, isRotated);
4848
// restore to default in case they were modified
4949
fontChar.visible = true;
5050
};
5151

5252
proto._changeTextureColor = function(){};
5353

5454
proto._updateCharColorAndOpacity = function(){};
55-
})();
55+
})();

0 commit comments

Comments
 (0)