Text player
Introduction¶
Typing characters on dynamic text, waiting click or key enter, play sound effect or backgroun music.
- Author: Rex
- Game object
Live demos¶
- BBCode
- Play
- Sprite control
- Show page
- Fast typing
- Custom game object
- Fade out page
- Choices
- Resolution
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.plugin('rextextplayerplugin', 'https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rextextplayerplugin.min.js', true); - Add text-player object
var txt = scene.add.rexTextPlayer(config);
Import plugin¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Install plugin in configuration of game
import TextPlayerPlugin from 'phaser3-rex-plugins/plugins/textplayer-plugin.js'; var config = { // ... plugins: { global: [{ key: 'rexTextPlayerPlugin', plugin: TextPlayerPlugin, start: true }, // ... ] } // ... }; var game = new Phaser.Game(config); - Add text-player object
var txt = scene.add.rexTextPlayer(config);
Import class¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Import class
import TextPlayer from 'phaser3-rex-plugins/plugins/textplayer.js'; - Add text-player object
var txt = new TextPlayer(scene, config); scene.add.existing(txt);
Create instance¶
var txt = scene.add.rexTextPlayer({
x: 0,
y: 0,
width: undefined,
height: undefined,
resolution: 1,
padding: 0, // {left: 0, right: 0, top: 0, bottom: 0}
background: {
color: null,
color2: null,
horizontalGradient: true,
stroke: null,
strokeThickness: 2,
cornerRadius: 0,
cornerIteration: null
},
innerBounds: {
color: null,
color2: null,
horizontalGradient: true,
stroke: null,
strokeThickness: 2
},
style: {
bold: false,
italic: false,
fontSize: '16px',
fontFamily: 'Courier',
color: '#fff',
stroke: '#fff',
strokeThickness: 0,
shadowColor: null,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 0,
offsetX: 0,
offsetY: 0,
leftSpace: 0,
rightSpace: 0,
},
parser: {
delimiters: '[]',
comment: '//',
// translateTagNameCallback: undefined,
}
wrap: {
callback: undefined, // Default wrapping callback is dynamicText.runWordWrap()
lineHeight:
// maxLines:
padding: { top: 0, left: 0, right: 0, bottom: 0 },
letterSpacing: 0,
wrapMode: 'word', // 1|'word'|2|'char'|'character'|3|'mix'
hAlign: 0, // 0|'left'|1|'center'|2|'right'|3|'justify'|'justify-left'|4|'justify-center'|5| justify-right'
vAlign: 0, // 0|'top'|1|'center'|2|'bottom'
},
typing: {
speed: 250,
onTypingStart: function (children) {
for (var i = 0, cnt = children.length; i < cnt; i++) {
children[i].setVisible(false);
}
}, // Default: set all children invisible
animation: undefined, // Default: no typing animation, only invoke onStart callback
animation: {
duration: 1000,
yoyo: false,
onStart: function(child) {
child.setVisible();
},
onProgress: function(child, t) {
},
onComplete: function(child) {
}
},
// skipSpace: false,
// minSizeEnable: false,
fadeOutPage: undefined, // Default: no fade-out-page animation
fadeOutPage: function(children) {
return eventEmitter;
return promise;
},
},
images: {
// key: {width, height}
// key: {key, frame, width, height}
},
sprites: {
// createCallback: 'sprite',
// createCallback: function(scene, ...) { return gameObject; },
// fade: 500,
// fade: {mode: 'tint', time: 500},
// viewportCoordinate: false,
// viewportCoordinate: { viewport: new Phaser.Geom.Rectangle() },
},
layers: undefined, // []
sounds: {
bgm: {
initial: undefinied,
loop: true,
fade: 500
},
bgm2: {
initial: undefinied,
loop: true,
fade: 500
}
},
clickTarget: this, // This text player
nextPageInput: null,
// ignoreNextPageInput: false,
text: undefined
});
x,y: Position of this text-player game object.width: Fixed width.- A number : Width of this text-player game object.
- Wrap-width is
width - padding.left - padding.right.
- Wrap-width is
undefined: Width of this text-player game object will be set after invokedrunWordWrapmethod.
- A number : Width of this text-player game object.
height: Fixed height.- A number : Height of this text-player game object.
undefined: Height of this text-player game object will be set after invokedrunWordWrapmethod.
resolution: The resolution the content is rendered to its internal canvas at. Default value is1.padding: Padding of bounds.- A number
padding.left,padding.right,padding.top,padding.bottom
background: Properties of background round-rectangle.background.color: Fill color.null: No filling.
background.color2: Gradient fill color.null: No gradient filling.
background.horizontalGradient: Horizontal or vertical gradient filling.true: Horizontal gradient filling.false: Vertical gradient filling.
background.stroke: Stroke color.null: No stroke.
background.strokeThickness: Line width of stroke.background.cornerRadius: Corner-radius of round rectangle.0: No round corner> 0: Convex round corner< 0: Concave round corner
background.cornerIteration: Iteration of corner-radius.null: Draw corner-radius via arc directly.- A number : Draw corner-radius via lines
innerBounds: Properties of inner-bounds.innerBounds.color: Fill color.null: No filling.
innerBounds.color2: Gradient fill color.null: No gradient filling.
innerBounds.horizontalGradient: Horizontal or vertical gradient filling.true: Horizontal gradient filling.false: Vertical gradient filling.
innerBounds.stroke: Stroke color.null: No stroke.
innerBounds.strokeThickness: Line width of stroke.
style: Initial text-style.style.bold: Boldstyle.italic: Italicstyle.fontSize: Font sizestyle.fontFamily: Font familystyle.color: Fill colorstyle.stroke: Stroke colorstyle.strokeThickness: Line width of stroke.style.shadowColor: Shadow color.null: No shadow.
style.shadowOffsetX: OffsetX of shadow.style.shadowOffsetY: OffsetY of shadow.style.shadowBlur: Blur of shadow.style.offsetX: OffsetX.style.offsetY: OffsetY.style.leftSpace: Extra space between this character and previous character.style.rightSpace: Extra space between this character and next character.style.align: Override default line-alignment setting.0,'left','top': Align remainder lines to left/top.1,'center': Align remainder lines to center.2,'right','bottom': Align remainder lines to right/bottom.undefined: Use default line-alignment setting.
wrap: Default configuration Horizontal/Vertical wrapping.typing:typing.speed: Default typing speed of each character.typing.onTypingStart: Callback when typing start. Default is to set all children to invisible.function (children) { for (var i = 0, cnt = children.length; i < cnt; i++) { children[i].setVisible(false); }children: Array of child.
typing.animation: Configuration of typing animationundefined: No typing animation, default behavior
typing.animation.duration: Duration of typing animation.typing.animation.yoyo:false: Mapping progresstto0-1. Default behavior.true: Mapping progresstto0-1-0.
typing.animation.onStart: Callback when typing start of a character. Default is to set this child to visible.function(child) { child.setVisible(); }typing.animation.onProgress: Callback when progress typing animation.function(child, t) { }typing.animation.onComplete: Callback when typing animation complete.function(child) { }typing.skipSpace:false: Will have delay when typing space character. Default behavior.true: Typing space character immediately.
typing.minSizeEnable:true: Resize to minimun size for showing all visible characters.false: Won't resize during typing. Default behavior.
typing.fadeOutPage: Callback to fade-out characters of previous page.undefined: Default value, no fade-out-page animation.- Callback
function(characters) { return tween; // eventEmitter return promise; }characters: Fade out targets.- Return value could be tween object (event emitter), or promise object.
- Tween object : Wait until
'complete'event triggering. - Promise object : Wait until promoise resolving.
- Tween object : Wait until
parser: Configuration of parser.parser.delimiters: Delimiters of tag. Default value is'[]'.parser.comment: Start word of a comment line. Default value is'//'.null, orfalse: No comment line.
parser.translateTagNameCallback: Callback to translate tag-nameundefined: Use original tag-name. Default behavior.- A function, return new tag name.
function(tagName) { return newTagName; }
images: Configuration of images.sprites: Configuration of sprites.sprites.createCallback:'sprite': Create sprite game object. Default behavior.'image': Create image game object.- Callback to return a game object
function(scene, textureKey, frameName) { // return scene.add.sprite(0, 0, textureKey, frameName); }
sprites.fade:0: No fade-in or fade-out when adding or removing a sprite.- A number : Duration of fading. Default value is
500. - A plain object contains
mode,timesprite.fade.mode: Fade modesprite.fade.time: Duration of fading. Default value is500.
sprites.viewportCoordinate: Apply viewportCoordinate behavior to sprite game object.true: Attachvpx,vpy,vpto sprite game object.vpx,vpy: Number between0~1. Proportion of viewport.vp: Viewport in rectangle
false: Do nothing, default behavior.
sprites.symbols: Convert string value to number value when Set or Ease property of game object.- A plain object contains string key and number value.
layers:undefined: Don't create layerManger.- Array of string : Pre-create layer game objects in layerManger.
sounds: Configuration of sound effect, or background music.sounds.bgm.initial,sounds.bgm2.initial: Initial music instance created byscene.sound.add(key)before starting playing content.undefined: No initial music instance, default value.
sounds.bgm.loop,sounds.bgm2.loop:true: Loop background music, default behavior.false: Play background music once.
sounds.bgm.fade,sounds.bgm2.fade:0: No fade-in or fade-out when starting or stopping a background music.- A number : Fade-in or fade-out (cross-fade) when starting or stopping a background music. Default value is
500.
nextPageInput: Wait condition to type next pagenull, orfalse: Stop tying next page. Default behavior- Typing next manually via
txt.typingNextPage().
- Typing next manually via
'click': Wait click.'click|2000': Wait one of condition: click, or 2000ms.'click|enter|2000': Wait one of condition: click, enter key down, or 2000ms.- A function callback :
function(callback) { // Invoke `callback()` to continue typing }
clickTarget: Click target, default is text player itself.scene: Any pointer down on this scene.
ignoreNextPageInput: Settrueto continue typing next page without any waiting.text: Content of text to play.
or
var txt = scene.add.rexTextPlayer(x, y, width, height, config);
or
var txt = scene.add.rexTextPlayer(x, y, config);
Add textplayer from JSON
var txt = scene.make.rexTextPlayer({
x: 0,
y: 0,
// origin: {x: 0.5, y: 0.5},
// fill: null,
add: true
});
Custom class¶
- Define class
class MyTextPlayer extends TextPlayer { constructor(scene, x, y, config) { super(scene, x, y, config); // ... scene.add.existing(this); } // ... // preUpdate(time, delta) {} }scene.add.existing(gameObject): Adds an existing Game Object to this Scene.- If the Game Object renders, it will be added to the Display List.
- If it has a
preUpdatemethod, it will be added to the Update List.
- Create instance
var txt = new MyTextPlayer(scene, x, y, config);
Game object manager¶
txt.addGameObjectManager({
name: goType,
createGameObject: function(scene, ...) {
return gameObject
},
fade: 500,
// fade: {mode: 'tint', time: 500},
// viewportCoordinate: false,
// viewportCoordinate: { viewport: new Phaser.Geom.Rectangle() },
// defaultLayer: layerName,
// symbols: undefined, // { key:value },
})
name: Name of this game object manager, a string.createGameObject: Callback to return a game object
function(scene, a, b, c) { // return gameObject; }a,b,c: Parameters pass from[goType.name=a,b,c]
fade: Tint-fade (if game object hastintproperty) or alpha-fade game object when creating or destroying a game object.0: No fade-in or fade-out when adding or removing a game object.- A number : Duration of fading. Default value is
500. - A plain object contains
mode,timefade.mode: Fade modefade.time: Duration of fading. Default value is500.
viewportCoordinate: Apply viewportCoordinate behavior to sprite game object.false: Do nothing, default behavior.true, or an object :viewport:undefined: Rectangle of display area under main camera of current scene. Default value.- A rectangle
defaultLayer: Put this game object into layer inside of layerManager.symbols: Convert string value to number value when Set or Ease property of game object.- A plain object contains string key and number value.
Built-in commands¶
goType : name parameter in config of txt.addGameObjectManager method
- Add game object :
[goType.name=a,b,c]- Tint-fade-in, or alpha-fade-in if
fadeis not0
- Tint-fade-in, or alpha-fade-in if
- Remove game object :
[/goType.name]- Tint-fade-out, or alpha-fade-out if
fadeis not0
- Tint-fade-out, or alpha-fade-out if
- Remove all game objects :
[/goType]- Tint-fade-out, or alpha-fade-out if
fadeis not0
- Tint-fade-out, or alpha-fade-out if
- Call method :
[goType.name.methodName=value0,value1,value2] - Set property :
[goType.name.x=value],[goType.name.alpha=value], .... - Ease property :
[goType.name.prop.easeMode=value,duration] [goType.name.prop.easeMode=value,duration,repeat] [goType.name.prop.easeMode=value,duration,easeFunction,repeat] [goType.name.prop.easeMode=value]prop: Any number property of this sprite.easeMode: One of these modesto,toLeft,toRight,toUp,toDownyoyo,yoyoLeft,yoyoRight,yoyoUp,yoyoDownfrom,fromLeft,fromRight,fromUp,fromDown
duration: Default value is1000easeFunction: Default value is'Linear'repeat: Default value is0
- Wait ease task of game object's number property :
[wait=goType.name.prop]- Also fire event
'wait.' + goTypetxt.on('wait.' + goType, function(name, prop) { })
- Also fire event
- Wait a game objects are destroyed :
[wait=goType.name]- Also fire event
'wait.' + goTypetxt.on('wait.' + goType, function(name, prop) { // prop parameter are `undefined` here })
- Also fire event
- Wait all game objects are destroyed :
[wait=goType]- Also fire event
'wait.' + goTypetxt.on('wait.' + goType, function(name, prop) { // name and prop parameter are `undefined` here })
- Also fire event
- Wait boolean data in game object's data manager set to
true/false:[wait=goType.name.dataKey]/[wait=goType.name.!dataKey]- Also fire event
'wait.' + goTypetxt.on('wait.' + goType, function(name, prop) { })
- Also fire event
Typing content¶
txt.play(content);
or
txt.playPromise(content)
.then(function(){
// Typing content complete
})
Show current page¶
txt.showPage();
- Set typing speed to
0. - Set animation progress to
1. - Skip all waiting events.
- Stop current sound effects, and ignore remainder sound effects.
Typing next page¶
txt.typingNextPage();
- Set
nextPageInputtonull, orfalsein config.
Ignore next page input¶
- Ignore next page input
txt.setIgnoreNextPageInput(); - Rollback waiting next page input
txt.setIgnoreNextPageInput(false);
Pause¶
- Pause typing
txt.pauseTyping(); - Pause typing and typing animation
txt.pause();
Resume¶
- Resume typing
txt.resumeTyping(); - Resume typing and typing animation
txt.resume();
Typing speed¶
- Get
- Default typing speed
var speed = txt.defaultTypingSpeed; - Current typing speed
var speed = txt.typingSpeed;
- Default typing speed
- Set
- Default typing speed
txt.setDefaultTypingSpeed(speed);txt.defaultTypingSpeed = speed; - Current typing speed
txt.setTypingSpeed(speed); // txt.setTypingSpeed(); // Set speed to default speedtxt.typingSpeed = speed;
- Default typing speed
Time scale¶
Time scale of typing, typing animation, sprite animation and easing of sprite's properties.
- Get
var timeScale = txt.timeScale; - Set
txt.setTimeScale(timeScale);txt.timeScale = timeScale;
Status¶
- Is playing : After
txt.play(content), before typing all pages completedvar isPlaying = txt.isPlaying - Is page typing : After
txt.play(content), ortxt.typingNextPage(), before page typing completedvar isPageTyping = txt.isPageTYyping;
Events¶
- On typing content complete
txt.on('complete', function() { }) - On typing a character or an image
txt.on('typing', function(child) { if (child.type === 'text') { var character = child.text; } else { var textureLey = child.key; var frameKey = child.frame; } }) - On typing a page start
txt.on('page.start', function() { }) - On typing a page complete
txt.on('page.complete', function() { })
Tags of content¶
Content¶
These lines will be skipped :
- Empty line, which only has space characters.
- Comment line, start with
'//'.
New line symbol '\n' will be removed, use [r] to insert a new line character.
Content output switch¶
- Turn off content output :
[content.off] - Turn on content output :
[content.on]
Content output enable¶
- Content won't output if
parser.setContentOutputEnable(false)under custom tag events- Fire
'parser.+custom#content'event if conent is ignored nowtxt.on('parser.+custom#content', function(parser, content) { })
- Fire
- Invoke
parser.setContentOutputEnable()to turn on content output back.
Text style¶
- Font color :
[color=red]content[/color],[color=#FF0000]content[/color] - Font size :
[size=24]content[/size] - Bold :
[b]content[/b] - Italic :
[i]content[/i] - Stroke :
[stroke]content[/stroke],[stroke=red]content[/stroke]strokeThicknessis set in config
- Shadow :
[shadow]content[/shadow],[shadow=red]content[/shadow]shadowOffsetX,shadowOffsetY,shadowBlurare set in config
- Character offset Y :
[y=-8]c[/y]ontent - Character offset X :
[x=10]c[/x]ontent - Left space :
[left=10]c[/left]ontent - Right space :
conten[right=10]t[/right] - Line-align :
[align=left],[align=center],[align=right]
New line¶
- New line :
[r]- New line via
\nwill be ignored.
- New line via
Page break¶
[pagebreak], or[pb]: Put remainder characters to next page.
Image¶
[img=key]
Render size¶
- Set render size in config
{ images: { // key: {width, height}, // key: {key, frame, width, height, tintFill: false} } }tintFill:false: Keep original color. Default behavior.true: Change fill-color by color tag.[color=...][img=...].
- Set render size by method
txt.addImage({ // key: {width, height}, // key: {key, frame, width, height, tintFill: false} }) - Use origin render size by default
Space¶
[space=width]
Typing speed¶
- No typing :
[speed=0] - Set speed :
[speed=1000] - Back to default speed :
[/speed]
Sprite¶
- Add sprite :
[sprite.name=textureKey,frameKey]- Tint-fade-in if
sprite.fadeis not0
- Tint-fade-in if
- Remove sprite :
[/sprite.name]- Tint-fade-out if
sprite.fadeis not0
- Tint-fade-out if
- Remove all sprites :
[/sprite]- Tint-fade-out if
sprite.fadeis not0
- Tint-fade-out if
- Call method :
[sprite.name.methodName=value0,value1,value2] - Set property :
[sprite.name.x=value],[sprite.name.alpha=value], .... - Ease property :
[sprite.name.x.to=value,duration][sprite.name.x.to=value,duration,repeat][sprite.name.x.to=value,duration,easeFunction,repeat][sprite.name.x.to=value]duration: Default value is1000easeFunction: Default value is'Linear'repeat: Default value is0
- Yoyo ease property :
[sprite.name.x.yoyo=value,duration][sprite.name.x.yoyo=value,duration,repeat][sprite.name.x.yoyo=value,duration,easeFunction,repeat][sprite.name.x.yoyo=value] - Set texture :
[sprite.name.texture=textureKey,frameKey] - Play animation :
[sprite.name.play=animationKey], or[sprite.name.play=animationKey0,animationKey1,...]- Can play animation without adding sprite first.
- Stop animation :
[/sprite.name.play], or[sprite.name.stop] - Pause animation :
[sprite.name.pause]
Sound effect¶
- Play :
[se=key],[se2=key]- Sound effect will be destroyed when complete
- Play with fade in volume :
[se=key,1000],[se2=key,1000] - Fade in volume :
[se.fadein=1000],[se2.fadein=1000] - Fade out volume :
[se.fadeout=1000],[se2.fadeout=1000] - Fade out volume then stop :
[se.fadeout=1000,stop],[se2.fadeout=1000,stop] - Set volume :
[se.volume=1],[se2.volume=1]
Background music¶
- Play, stop :
[bgm=key],[/bgm], [bgm2=key],[/bgm2]`- Previous background music will be stopped and destroyed.
- Cross fade to next background music if
sounds.bgm.fade/sounds.bgm2.fadeis not0
- Play with fade in volume :
[bgm=key,1000],[bgm2=key,1000] - Pause, resume :
[bgm.pause],[/bgm.pause],[bgm2.pause],[/bgm2.pause] - Fade in volume :
[bgm.fadein=1000],[bgm2.fadein=1000] - Fade out volume :
[bgm.fadeout=1000],[bgm2.fadeout=1000] - Fade out volume then stop :
[bgm.fadeout=1000,stop],[bgm2.fadeout=1000,stop] - Cross fade to another background music :
[bgm.cross=key,10000],[bgm2.cross=key,10000] - Set volume :
[bgm.volume=1],[bgm2.volume=1] - Mute :
[bgm.mute],[bgm2.mute],[bgm.unmute],[bgm2.unmute]
Camera¶
- Fade-in effect :
[camera.fadein],[camera.fadein=1000], or[camera.fadein=duration,red,green,blue] - Fade-out effect :
[camera.fadeout],[camera.fadeout=1000], or[camera.fadeout=duration,red,green,blue] - Flash effect :
[camera.flash],[camera.flash=1000], or[camera.flash=duration,red,green,blue] - Shake effect :
[camera.shake],[camera.shake=1000], or[camera.shake=duration,intensity] - Zoom
- Set zoom :
[camera.zoom=2] - Zoom to :
[camera.zoom.to=1,1000], or[camera.zoom.to=zoomValue,duration,Cubic]
- Set zoom :
- Rotate
- Set angle :
[camera.rotate=90], angle in degrees - Rotate to :
[camera.rotate.to=0,1000], or[camera.rotate.to=deg,duration,Cubic], angle in degrees
- Set angle :
- Scroll
- Scroll x,y :
[camera.scroll=0,200] - Scroll x,y to :
[camera.scroll.to=0,200,1000], or[camera.rotate.to=x,y,duration,Cubic]
- Scroll x,y :
Wait conditions¶
- Wait click :
[wait=click],[click]- Also fire event
'wait.click'txt.on('wait.click', function() { })
- Also fire event
- Wait key-down :
[wait=enter],[wait=space], ....- Also fire event
'wait.keydown'txt.on('wait.keydown', function(keyName) { })
- Also fire event
- Wait time :
[wait=1000]- Also fire event
'wait.time'txt.on('wait.time', function(time) { })
- Also fire event
- Wait sound effect :
[wait=se],[wait=se2]- Also fire event
'wait.music'txt.on('wait.music', function(music) { // var key = music.key; })
- Also fire event
- Wait background music :
[wait=bgm],[wait=bgm2]- Also fire event
'wait.music'txt.on('wait.music', function(music) { // var key = music.key; })
- Also fire event
- Wait camera effect :
[wait=camera.fadein],[wait=camera.fadeout],[wait=camera.flash],[wait=camera.shake],[wait=camera.zoom],[wait=camera.rotate],[wait=camera.scroll]- Also fire event
'wait.camera'txt.on('wait.camera', function(effectName) { // effectName : 'camera.fadein', 'camera.fadeout', 'camera.flash', 'camera.shake', 'camera.zoom', 'camera.rotate', 'camera.scroll' })
- Also fire event
- Wait ease task of sprite's property :
[wait=sprite.name.prop]- Also fire event
'wait.sprite'txt.on('wait.sprite', function(name, prop) { })
- Also fire event
- Wait all sprites are destroyed :
[wait=sprite]- Also fire event
'wait.sprite'txt.on('wait.sprite', function(name, prop) { // name and prop parameter are `undefined` here })
- Also fire event
- Wait callback :
[wait], or[wait=xxx](xxxis any string which not been used in above case)- Fire event
'wait'txt.on('wait', function(callback) { // Invoke `callback()` to continue typing }) - Fire event
'wait.xxx'txt.on('wait.xxx', function(callback) { // Invoke `callback()` to continue typing })
- Fire event
- Combine conditions :
[wait=cond0|cond1|...]- Wait click, or enter key down :
[wait=click|enter] - Wait click, enter key down, or 100ms :
[wait=click|enter|1000]
- Wait click, or enter key down :
Custom tag¶
Assume that adding a custom tag : [custom=10,20][/custom].
+custom parses the open tag [custom=10,20] and -custom parses the closing tag [/custom]
- On parse a
+customtag, will add a custom command childtxt.on('parser.+custom', function(parser, a, b, params) { // console.log('Parse +custom tag:', a, b) })- parses opening tag
a,b, ... : Parameters after=params: Arguments array used when executing+custom. Equal to[a, b]in this case.- Disable content after this start tag
parser.setContentOutputEnable(false);
- On execute a
+customcommand childtxt.on('tag.+custom', function(a, b) { // console.log('Execute +custom tag:', a, b) })a,b, ... : Parameters passed fromparamsin'parser.+custom'event.
- On parse a
-customtag, will add a custom command childtxt.on('parser.-custom', function(parser, params) { // console.log('Parse -custom tag') })- parses closing tag
params: Arguments array used when executing-custom. Equal to[]in this case.- Enable content after this start tag
parser.setContentOutputEnable(true);
- On execute a
-customcommand childtxt.on('tag.-custom', function(...params) { // console.log('Execute -custom tag') })params: Parameters passed fromparamsin'parser.-custom'event.
Size¶
- Resize canvas size
txt.setCanvasSize(width, height) - Reisze text wrapping size and canvas size.
or
txt.setSize(width, height);txt.setFixedSize(width, height); - Resize to minimun size to show all visible characters.
txt.setToMinSize();
Other properties¶
See game object
Create mask¶
var mask = txt.createBitmapMask();
See mask
Shader effects¶
Support preFX and postFX effects