phaser-ce icon indicating copy to clipboard operation
phaser-ce copied to clipboard

Tinting BitmapText characters separately not working after setting anchor

Open istvan89 opened this issue 8 years ago • 2 comments

Basically what in the title is. You can tint a BitmapText's characters separately, but if you set anchor (or maybe some other properties too), the tinting is not working on per character. I guess the engine overwrites all the children elements (the characters) tint values with the BitmapText's tint value.

Here is a small example demonstrating the problem: http://icedevel.com/phaser-bug/character-tinting/index.html

My opinion is that the children elements should retain tint values if the BitmapText's tint value is not modified.

And the code:

var game;

function preload() {
	this.game.load.bitmapFont("font", "font_simple.png", "font_simple.fnt");
}

function create() {
	var txt1 = this.game.add.bitmapText(50, 50, "font", "012345", 28);
	txt1.children[0].tint = 0xFF0000;
	txt1.children[1].tint = 0xFFFF00;
	txt1.children[2].tint = 0xFF00FF;
	txt1.children[3].tint = 0x0000FF;
	txt1.children[4].tint = 0x00FFFF;
	txt1.children[5].tint = 0xFF0FF0;
	
	
	var txt2 = this.game.add.bitmapText(50, 250, "font", "012345", 28);
	txt2.anchor.setTo(0, 1);
	txt2.children[0].tint = 0xFF0000;
	txt2.children[1].tint = 0xFFFF00;
	txt2.children[2].tint = 0xFF00FF;
	txt2.children[3].tint = 0x0000FF;
	txt2.children[4].tint = 0x00FFFF;
	txt2.children[5].tint = 0xFF0FF0;
	
	
}

function update() {
}


window.onload = function(){
	var config = {
		width: 800,
		height: 600,
		renderer: Phaser.AUTO,
		antialias: true,
		state: {
			preload: preload,
			create: create,
			update: update
		}
	}
	game = new Phaser.Game(config);
};

Tested it on Phaser 2.8.0

istvan89 avatar Jun 07 '17 10:06 istvan89

So removing txt2.anchor.setTo(0, 1) eliminates the problem?

samme avatar Jun 09 '17 03:06 samme

It looks like an anchor change triggers BitmapText#updateText.

samme avatar Jun 09 '17 03:06 samme