text in pixi.js
This commit is contained in:
parent
2b83157c1d
commit
67de369d34
81
content/posts/pixijs/02-text-in-pixi.md
Normal file
81
content/posts/pixijs/02-text-in-pixi.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
title: "Текст в PixiJS"
|
||||||
|
date: 2022-08-15T01:17:22+03:00
|
||||||
|
draft: true
|
||||||
|
tags: [pixijs, javascript, gamedev, tutorial]
|
||||||
|
---
|
||||||
|
|
||||||
|
В данном уроке рассмотрим отображение текста в PixiJS.
|
||||||
|
|
||||||
|
Сразу в бой, держи код.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
let app = new PIXI.Application({ width: 400, height: 400, backgroundColor: 0x339955 });
|
||||||
|
document.body.appendChild(app.view);
|
||||||
|
|
||||||
|
const basicText = new PIXI.Text('Просто обычный текст');
|
||||||
|
basicText.anchor.set(0.5);
|
||||||
|
basicText.x = app.screen.width / 2;
|
||||||
|
basicText.y = 60;
|
||||||
|
|
||||||
|
app.stage.addChild(basicText);
|
||||||
|
```
|
||||||
|
|
||||||
|
Работает, но выглядит просто. Давай добавим стилей.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const style = new PIXI.TextStyle({
|
||||||
|
fontFamily: 'serif',
|
||||||
|
fontSize: 36,
|
||||||
|
fontStyle: 'italic',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
fill: ['#ffffff', '#00ff99'], // gradient
|
||||||
|
stroke: '#4a1850',
|
||||||
|
strokeThickness: 5,
|
||||||
|
dropShadow: true,
|
||||||
|
dropShadowColor: '#000000',
|
||||||
|
dropShadowBlur: 4,
|
||||||
|
dropShadowAngle: Math.PI / 6,
|
||||||
|
dropShadowDistance: 6,
|
||||||
|
wordWrap: true,
|
||||||
|
wordWrapWidth: 400,
|
||||||
|
lineJoin: 'round',
|
||||||
|
});
|
||||||
|
|
||||||
|
const richText = new PIXI.Text('Текст со всякими стилями', style);
|
||||||
|
richText.anchor.set(0.5, 0);
|
||||||
|
richText.x = app.screen.width / 2;
|
||||||
|
richText.y = 100;
|
||||||
|
|
||||||
|
app.stage.addChild(richText);
|
||||||
|
```
|
||||||
|
|
||||||
|
Круто, не правда ли?
|
||||||
|
|
||||||
|
А ты обратил внимание, что текст автоматически перенёсся на новую строку,
|
||||||
|
потому что не влез по длине? :) Фантастика!
|
||||||
|
|
||||||
|
По умолчанию пренос текста не происходит. За эту фичу отвечает параметр стилей `wordWrap`.
|
||||||
|
|
||||||
|
Смотри сколько их много [PIXI.TextStyle](https://pixijs.download/dev/docs/PIXI.TextStyle.html).
|
||||||
|
|
||||||
|
Что дальше? Сделаем кликабельный счётчик!
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Создамит новый текст
|
||||||
|
const basicTextCounter = new PIXI.Text('0');
|
||||||
|
basicTextCounter.style.fontSize = 50;
|
||||||
|
basicTextCounter.anchor.set(0.5);
|
||||||
|
basicTextCounter.x = app.screen.width / 2;
|
||||||
|
basicTextCounter.y = 275;
|
||||||
|
|
||||||
|
// Добавим интерактива
|
||||||
|
basicTextCounter.interactive = true;
|
||||||
|
basicTextCounter.cursor = 'pointer';
|
||||||
|
basicTextCounter.on('click', (event) => {
|
||||||
|
// Код, который инкрементируем значение
|
||||||
|
basicTextCounter.text = parseInt(basicTextCounter.text) + 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
app.stage.addChild(basicTextCounter);
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user