2013-10-01 12:54:29 +00:00
/ * *
* @ author Richard Davey < rich @ photonstorm . com >
* @ copyright 2013 Photon Storm Ltd .
* @ license { @ link https : //github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
* /
/ * *
* Create a new < code > Text < / c o d e > .
* @ class Phaser . Text
* @ constructor
* @ param { Phaser . Game } game - Current game instance .
2013-10-25 14:22:45 +00:00
* @ param { number } x - X position of the new text object .
* @ param { number } y - Y position of the new text object .
* @ param { string } text - The actual text that will be written .
* @ param { object } style - The style object containing style attributes like font , font size ,
2013-10-01 12:54:29 +00:00
* /
2013-09-03 05:02:47 +00:00
Phaser . Text = function ( game , x , y , text , style ) {
x = x || 0 ;
y = y || 0 ;
text = text || '' ;
style = style || '' ;
2013-11-25 03:13:04 +00:00
/ * *
* @ property { Phaser . Game } game - A reference to the currently running Game .
* /
this . game = game ;
/ * *
2013-11-25 04:40:04 +00:00
* @ property { boolean } exists - If exists = false then the Text isn ' t updated by the core game loop .
2013-11-25 03:13:04 +00:00
* @ default
* /
2013-09-17 15:28:59 +00:00
this . exists = true ;
2013-11-25 03:13:04 +00:00
/ * *
2013-11-25 04:40:04 +00:00
* @ property { boolean } alive - This is a handy little var your game can use to determine if an object is alive or not , it doesn ' t effect rendering .
2013-11-25 03:13:04 +00:00
* @ default
* /
2013-09-17 15:28:59 +00:00
this . alive = true ;
2013-09-13 04:44:04 +00:00
2013-11-25 03:13:04 +00:00
/ * *
2013-11-25 04:40:04 +00:00
* @ property { Phaser . Group } group - The parent Group of this Text object .
2013-11-25 03:13:04 +00:00
* /
2013-09-17 15:28:59 +00:00
this . group = null ;
2013-09-03 05:02:47 +00:00
2013-11-25 03:13:04 +00:00
/ * *
2013-11-25 04:40:04 +00:00
* @ property { string } name - The user defined name given to this object .
2013-11-25 03:13:04 +00:00
* @ default
* /
2013-09-17 15:28:59 +00:00
this . name = '' ;
2013-09-03 05:02:47 +00:00
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 03:13:04 +00:00
* @ property { number } type - The const type of this object .
* @ default
2013-10-01 12:54:29 +00:00
* /
2013-11-25 03:13:04 +00:00
this . type = Phaser . TEXT ;
2013-09-03 05:02:47 +00:00
2013-11-25 03:13:04 +00:00
/ * *
* @ property { string } _text - Internal value .
* @ private
* /
2013-09-20 12:55:33 +00:00
this . _text = text ;
2013-11-25 03:13:04 +00:00
/ * *
* @ property { string } _style - Internal value .
* @ private
* /
2013-09-20 12:55:33 +00:00
this . _style = style ;
2013-09-17 15:28:59 +00:00
PIXI . Text . call ( this , text , style ) ;
2013-09-03 05:02:47 +00:00
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 04:40:04 +00:00
* @ property { Phaser . Point } position - The position of this Text object in world space .
* /
2013-09-19 06:57:19 +00:00
this . position . x = this . x = x ;
this . position . y = this . y = y ;
2013-09-17 15:28:59 +00:00
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 03:13:04 +00:00
* The anchor sets the origin point of the texture .
* The default is 0 , 0 this means the textures origin is the top left
* Setting than anchor to 0.5 , 0.5 means the textures origin is centered
* Setting the anchor to 1 , 1 would mean the textures origin points will be the bottom right
*
2013-11-25 04:40:04 +00:00
* @ property { Phaser . Point } anchor - The anchor around which rotation and scaling takes place .
2013-11-25 03:13:04 +00:00
* /
2013-09-17 15:28:59 +00:00
this . anchor = new Phaser . Point ( ) ;
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 03:13:04 +00:00
* @ property { Phaser . Point } scale - The scale of the object when rendered . By default it ' s set to 1 ( no scale ) . You can modify it via scale . x or scale . y or scale . setTo ( x , y ) . A value of 1 means no change to the scale , 0.5 means "half the size" , 2 means "twice the size" , etc .
* /
2013-09-17 15:28:59 +00:00
this . scale = new Phaser . Point ( 1 , 1 ) ;
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 03:13:04 +00:00
* @ property { object } _cache - A mini cache for storing all of the calculated values .
2013-10-01 12:54:29 +00:00
* @ private
* /
2013-11-25 03:13:04 +00:00
this . _cache = {
2013-09-17 15:28:59 +00:00
dirty : false ,
// Transform cache
2013-11-25 03:13:04 +00:00
a00 : 1 ,
a01 : 0 ,
a02 : x ,
a10 : 0 ,
a11 : 1 ,
a12 : y ,
id : 1 ,
2013-09-17 15:28:59 +00:00
2013-10-04 13:41:15 +00:00
// The previous calculated position
2013-11-25 03:13:04 +00:00
x : - 1 ,
y : - 1 ,
2013-09-17 15:28:59 +00:00
// The actual scale values based on the worldTransform
2013-11-25 03:13:04 +00:00
scaleX : 1 ,
scaleY : 1
2013-09-17 15:28:59 +00:00
} ;
2013-10-04 13:41:15 +00:00
this . _cache . x = this . x ;
this . _cache . y = this . y ;
2013-09-17 15:28:59 +00:00
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 03:13:04 +00:00
* @ property { boolean } renderable - A renderable object will be rendered to the context each frame .
2013-10-01 12:54:29 +00:00
* /
2013-09-17 15:28:59 +00:00
this . renderable = true ;
2013-09-03 05:02:47 +00:00
} ;
2013-09-17 15:28:59 +00:00
Phaser . Text . prototype = Object . create ( PIXI . Text . prototype ) ;
2013-09-03 05:02:47 +00:00
Phaser . Text . prototype . constructor = Phaser . Text ;
2013-10-01 12:54:29 +00:00
/ * *
* Automatically called by World . update .
* @ method Phaser . Text . prototype . update
* /
2013-09-17 15:28:59 +00:00
Phaser . Text . prototype . update = function ( ) {
if ( ! this . exists )
{
return ;
}
this . _cache . dirty = false ;
2013-10-04 13:41:15 +00:00
this . _cache . x = this . x ;
this . _cache . y = this . y ;
2013-09-17 15:28:59 +00:00
if ( this . position . x != this . _cache . x || this . position . y != this . _cache . y )
{
this . position . x = this . _cache . x ;
this . position . y = this . _cache . y ;
this . _cache . dirty = true ;
}
}
2013-10-17 14:40:44 +00:00
/ * *
* @ method Phaser . Text . prototype . destroy
* /
Phaser . Text . prototype . destroy = function ( ) {
if ( this . group )
{
this . group . remove ( this ) ;
}
if ( this . canvas . parentNode )
{
this . canvas . parentNode . removeChild ( this . canvas ) ;
}
else
{
this . canvas = null ;
this . context = null ;
}
this . exists = false ;
this . group = null ;
}
2013-10-01 12:54:29 +00:00
/ * *
2013-11-25 04:40:04 +00:00
* Indicates the rotation of the Text , in degrees , from its original orientation . Values from 0 to 180 represent clockwise rotation ; values from 0 to - 180 represent counterclockwise rotation .
* Values outside this range are added to or subtracted from 360 to obtain a value within the range . For example , the statement player . angle = 450 is the same as player . angle = 90.
* If you wish to work in radians instead of degrees use the property Sprite . rotation instead .
* @ name Phaser . Text # angle
* @ property { number } angle - Gets or sets the angle of rotation in degrees .
2013-10-01 12:54:29 +00:00
* /
2013-09-17 15:28:59 +00:00
Object . defineProperty ( Phaser . Text . prototype , 'angle' , {
get : function ( ) {
return Phaser . Math . radToDeg ( this . rotation ) ;
} ,
set : function ( value ) {
this . rotation = Phaser . Math . degToRad ( value ) ;
}
} ) ;
2013-11-25 04:40:04 +00:00
/ * *
* The x coordinate of this object in world space .
2013-11-25 13:12:03 +00:00
* @ name Phaser . Text # x
2013-11-25 04:40:04 +00:00
* @ property { number } x - The x coordinate of this object in world space .
* /
2013-11-25 13:12:03 +00:00
Object . defineProperty ( Phaser . Text . prototype , 'x' , {
2013-11-25 04:40:04 +00:00
get : function ( ) {
return this . position . x ;
} ,
set : function ( value ) {
this . position . x = value ;
}
} ) ;
/ * *
* The y coordinate of this object in world space .
2013-11-25 13:12:03 +00:00
* @ name Phaser . Text # y
2013-11-25 04:40:04 +00:00
* @ property { number } y - The y coordinate of this object in world space .
* /
2013-11-25 13:12:03 +00:00
Object . defineProperty ( Phaser . Text . prototype , 'y' , {
2013-11-25 04:40:04 +00:00
get : function ( ) {
return this . position . y ;
} ,
set : function ( value ) {
this . position . y = value ;
}
} ) ;
/ * *
* The string to be rendered by this Text object .
* @ name Phaser . Text # content
* @ property { string } content - The string to be rendered by this Text object .
* /
2013-09-27 08:57:08 +00:00
Object . defineProperty ( Phaser . Text . prototype , 'content' , {
2013-09-20 12:55:33 +00:00
get : function ( ) {
return this . _text ;
} ,
set : function ( value ) {
// Let's not update unless needed, this way we can safely update the text in a core loop without constant re-draws
if ( value !== this . _text )
{
this . _text = value ;
2013-09-27 08:57:08 +00:00
this . setText ( value ) ;
2013-09-20 12:55:33 +00:00
}
}
} ) ;
2013-11-25 04:40:04 +00:00
/ * *
* The font the text will be rendered in .
* @ name Phaser . Text # font
* @ property { string } font - The font the text will be rendered in .
* /
2013-09-27 08:57:08 +00:00
Object . defineProperty ( Phaser . Text . prototype , 'font' , {
2013-09-20 12:55:33 +00:00
get : function ( ) {
return this . _style ;
} ,
set : function ( value ) {
// Let's not update unless needed, this way we can safely update the text in a core loop without constant re-draws
if ( value !== this . _style )
{
this . _style = value ;
2013-09-27 08:57:08 +00:00
this . setStyle ( value ) ;
2013-09-20 12:55:33 +00:00
}
}
} ) ;