Cocos2d-xで開発しているゲーム、いつもGoogle Chromeで確認をしていました。
が、今回はオンライン対戦ゲーム。
ひとりで確認するには複数のブラウザを使います。
Chrome VS FireFox で対戦をしようとしたら、FireFoxでラベルの位置がすべて上にずれている!!
愕然としました。。。
調べてみると、cc.LabelTTFを使用している箇所だと判明。
cocos2dのソースを直接なおすしかありません。
対応したソース:frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFCanvasRenderCmd.js
以下、178行目から。赤字部分を追加。
if (this._isMultiLine) {
var locStrLen = this._strings.length;
if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM)
yOffset = lineHeight – transformTop * 2 + locContentSizeHeight – lineHeight * locStrLen;
else if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_CENTER)
yOffset = (lineHeight – transformTop * 2) / 2 + (locContentSizeHeight – lineHeight * locStrLen) / 2;
for (var i = 0; i < locStrLen; i++) {
var tmpOffsetY = -locContentSizeHeight + (lineHeight * i + transformTop) + yOffset;
if (cc.sys.browserType == ‘firefox’) {
tmpOffsetY += 5;
}
OffsetYArray.push(tmpOffsetY);
}
} else {
if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM) {
//do nothing
} else if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_TOP) {
yOffset -= locContentSizeHeight;
} else {
yOffset -= locContentSizeHeight * 0.5;
}
if (cc.sys.browserType == ‘firefox’) {
yOffset += 5;
}
OffsetYArray.push(yOffset);
}
これで解決です!