Draw text char by char
This commit is contained in:
1 parent
abfb7a20bc
commit
b8ed209854
2 files changed
+21
-4
No files matched your search
@@ -52,3 +52,6 @@ export const PARTICLE_FADE_AMOUNT = 1;
|
|||||||
|
|
||||||
export const MAX_EXPLOSION_SHAKE_FACTOR = 60;
|
export const MAX_EXPLOSION_SHAKE_FACTOR = 60;
|
||||||
export const EXPLOSION_SHAKE_REDUCTION_FACTOR = 7;
|
export const EXPLOSION_SHAKE_REDUCTION_FACTOR = 7;
|
||||||
|
|
||||||
|
export const FONT_WIDTH = 3;
|
||||||
|
export const FONT_HEIGHT = 5;
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import {splitWords} from './utils.js';
|
import {splitWords} from './utils.js';
|
||||||
import {parable} from './math.js';
|
import {parable} from './math.js';
|
||||||
|
import {FONT_HEIGHT, FONT_WIDTH} from './constants.js';
|
||||||
|
|
||||||
export function createCanvas(width, height) {
|
export function createCanvas(width, height) {
|
||||||
const canvas = document.createElement('canvas');
|
const canvas = document.createElement('canvas');
|
||||||
@@ -87,12 +88,25 @@ export function drawCircle(ctx, x, y, r, color) {
|
|||||||
export function drawText(ctx, text, x, y, color, align='left', baseline='top') {
|
export function drawText(ctx, text, x, y, color, align='left', baseline='top') {
|
||||||
x = Math.round(x); y = Math.round(y);
|
x = Math.round(x); y = Math.round(y);
|
||||||
ctx.font = '5px text';
|
ctx.font = '5px text';
|
||||||
ctx.textBaseline = baseline;
|
ctx.textBaseline = 'top';
|
||||||
ctx.textAlign = align;
|
ctx.textAlign = 'left';
|
||||||
ctx.fillStyle = color;
|
ctx.fillStyle = color;
|
||||||
ctx.strokeStyle = 'black';
|
ctx.strokeStyle = 'black';
|
||||||
ctx.strokeText(text, x, y);
|
const length = (text.length * FONT_WIDTH) + (text.length -1);
|
||||||
ctx.fillText(text, x, y);
|
const left = (
|
||||||
|
align === 'right' ? x - length :
|
||||||
|
align === 'center' ? x - Math.round(length /2) :
|
||||||
|
x
|
||||||
|
);
|
||||||
|
const top = (
|
||||||
|
baseline === 'bottom' ? y - FONT_HEIGHT :
|
||||||
|
baseline === 'middle' ? y - Math.round(FONT_HEIGHT /2) :
|
||||||
|
y
|
||||||
|
);
|
||||||
|
for (let i=0; i<text.length; i++) {
|
||||||
|
ctx.strokeText(text[i], left + i*FONT_WIDTH + i, top);
|
||||||
|
ctx.fillText(text[i], left + i*FONT_WIDTH + i, top);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function drawParagraph(ctx, text, x, y, w, h, color) {
|
export function drawParagraph(ctx, text, x, y, w, h, color) {
|
||||||
|
|||||||
Reference in new issue
Block a user