Type Function Library display.* Return value SpriteObject Revision Release 2024.3703 Keywords sprite, animation See also Sprite Animation (guide) Image Sheets (guide)
Creates a sprite object. Sprites allow for animated sequences of frames that reside on image sheets. Please see the Sprite Animation and Image Sheets guides for more information.
The local origin is at the center of the sprite and the anchor point is initialized to this local origin.
By default, sprites use frames that reside on a single image sheet. This corresponds to the image sheet you pass to the display.newSprite()
constructor.
For each sequence, you can specify a different image sheet instead of using the default image sheet. You do this by using the optional sheet
parameter in a sequenceData
table. For details, see Sequence Data below.
display.newSprite( [parent,] imageSheet, sequenceData )
GroupObject. An optional display group in which to insert the sprite.
ImageSheet. Specifies the default image sheet.
Table. A table which holds data for a specific sequence. Or, if you have more than one animation sequence for a single object, sequenceData
is then an array of tables that hold data for each sequence. For instance, you might have a character object with several different animation sequences such as "walking"
, "jumping"
, and "swimming"
. Frames in a given sequence may be consecutive (1,2,3,4,...
) or non-consecutive (1,3,4,6,9,...
) within the image sheet. See Sequence Data below.
This is a table which holds data for one of more sequences. Sequences may be shared between multiple sprite objects.
String. The unique sequence name, used to load the sequence when it's time to play it.
Number. For consecutive-frame sequences, start
represents the starting frame.
Number. For consecutive-frame sequences, count
represents how many frames from the start that the sequence should end.
Array. For non-consecutive-frame sequences, this is an array that holds the frameIndex in the exact order animation should be played.
ImageSheet. You can specify a per-sequence image sheet. Typically you would do this if you wanted to use a different image sheet. If none is provided, it defaults to the image sheet you provided to display.newSprite()
. A single sprite can also pull frames/sequences from different image sheets — see the Multiple Image Sheets example below.
Number. This is the time (in milliseconds) for the entire sequence to animate. If not specified, then the
Number. This is a number that represents how many times you want the sequence to loop when it is played. Setting this to 1
will play the sequence once and then stop. The default is 0
, which will loop the sequence indefinitely.
String. This can either be "forward"
or "bounce"
, with "forward"
being the default. The "bounce"
option will play forward then backwards through the sequence of frames.
-- Example assumes 'imageSheet' is already created from graphics.newImageSheet() -- consecutive frames local sequenceData = { name="walking", start=3, count=6, time=100, loopCount = 0, -- Optional ; default is 0 (loop indefinitely) loopDirection = "bounce" -- Optional ; values include "forward" or "bounce" } local character = display.newSprite( imageSheet, sequenceData )
-- Example assumes 'imageSheet' is already created using graphics.newImageSheet() -- non-consecutive frames local sequenceData = { name="walking", frames= { 3, 4, 5, 6, 7, 8 }, -- frame indexes of animation, in image sheet time = 240, loopCount = 0 -- Optional ; default is 0 } local character = display.newSprite( imageSheet, sequenceData )
-- Example assumes 'imageSheet' already created using graphics.newImageSheet() local sequenceData = { { name="walking", start=1, count=3 }, { name="running", frames={ 3, 4, 5, 6, 7, 8 }, time=120, loopCount=4 }, { name="jumping", start=9, count=13, time=300 } } local character = display.newSprite( imageSheet, sequenceData )
-- 1st image sheet local sheetData1 = { width=64, height=64, numFrames=6, sheetContentWidth=384, sheetContentHeight=64 } local sheet1 = graphics.newImageSheet( "mySheet1.png", sheetData1 ) -- 2nd image sheet local sheetData2 = { width=64, height=64, numFrames=6, sheetContentWidth=384, sheetContentHeight=64 } local sheet2 = graphics.newImageSheet( "mySheet2.png", sheetData2 ) -- In your sequences, add the parameter 'sheet=', referencing which image sheet the sequence should use local sequenceData = { { name="seq1", sheet=sheet1, start=1, count=6, time=220, loopCount=0 }, { name="seq2", sheet=sheet2, start=1, count=6, time=220, loopCount=0 } } local myAnimation = display.newSprite( sheet1, sequenceData ) myAnimation.x = display.contentWidth/2 ; myAnimation.y = display.contentHeight/2 myAnimation:play() -- After a short time, swap the sequence to 'seq2' which uses the second image sheet local function swapSheet() myAnimation:setSequence( "seq2" ) myAnimation:play() end timer.performWithDelay( 2000, swapSheet )