Files
flame/doc/text.md
Erick c8dc0b45c5 Removing initialDimensions and removeGesture methods (#627)
* Removing initialDimensions and removeGesture methods

* Removing wrongly commited folder

* PR suggestion
2021-01-17 11:21:37 -03:00

86 lines
2.8 KiB
Markdown

# Text Rendering
Flame has some dedicated classes to help you render text.
## TextConfig
A Text Config contains all typographical information required to render text; i.e., font size and color, family, etc.
Example usage:
```dart
const TextConfig config = TextConfig(fontSize: 48.0, fontFamily: 'Awesome Font');
```
* fontFamily : a commonly available font, like Arial (default), or a custom font added in your pubspec (see [here](https://flutter.io/custom-fonts/) how to do it)
* fontSize : font size, in pts (default `24.0`)
* lineHeight: height of text line, as a multiple of font size (default `null`)
* color : the color, as a `ui.Color` (default black)
For more information regarding colors and how to create then, see the [Colors and the Palette](palette.md) guide.
After the creation of the config you can use its `render` method to draw some string on a canvas:
```dart
config.render(canvas, "Flame is awesome", Position(10, 10));
```
If you want to set the anchor of the text you can also do that in the render call, with the optional parameter `anchor`:
```dart
config.render(canvas, "Flame is awesome", Position(10, 10), anchor: Anchor.topCenter);
```
## Text Components
Flame provides two text components that make it even easier to render text in your game: `TextComponent` and `TextBoxComponent`.
### TextComponent
`TextComponent` is a simple component that renders a single line of text.
Example usage:
```dart
TextConfig regular = TextConfig(color: BasicPalette.white.color);
class MyGame extends BaseGame {
@override
Future<void> onLoad() async {
add(TextComponent('Hello, Flame', config: regular)
..anchor = Anchor.topCenter
..x = size.width / 2 // size is a property from game
..y = 32.0);
}
}
```
### TextBoxComponent
`TextBoxComponent` is very similar to `TextComponent`, but as its name suggest it is used to render text inside a bounding box, creating line breaks according to the provided box size.
You can decide if the box should grow as the text is written or if it should be static by the `growingBox` variable in the `TextBoxConfig`.
If you want to change the margins of the box use the `margins` variable in the `TextBoxConfig`.
Example usage:
```dart
class MyTextBox extends TextBoxComponent {
MyTextBox(String text) : super(text, config: tiny, boxConfig: TextBoxConfig(timePerChar: 0.05));
@override
void drawBackground(Canvas c) {
Rect rect = Rect.fromLTWH(0, 0, width, height);
c.drawRect(rect, new Paint()..color = Color(0xFFFF00FF));
c.drawRect(
rect.deflate(boxConfig.margin),
new Paint()
..color = BasicPalette.black.color
..style = PaintingStyle.stroke);
}
}
```
Both components are showcased in an example [here](https://github.com/luanpotter/flame/tree/master/doc/examples/text)