Ok, so I thought I had it working when I specified for my player to run through the “flip” spritesheet and onComplete revert back to the “idle” sheet. That works perfectly.
However, If I change it from the “flip” sheet to any other sheet, (“grab,” “turn” etc) then it either still plays through the flip sheet or gives me some weird stuttering glitch with blank frames.
Here’s my full code, (sadly it’s not drag and drop because of the sprite sheets)
[code]
physics = require(“physics”)
physics.start()
physics.setGravity(0,9.8) – change gravity to control the jump curve.
require “sprite”
display.setStatusBar( display.HiddenStatusBar )
_H = display.contentHeight;
_W = display.contentWidth;
canJump = false
local idleSheet = sprite.newSpriteSheet( “idle.png”, 30,30)
local flipSheet = sprite.newSpriteSheet( “flipsheet.png”, 30,30)
local grabSheet = sprite.newSpriteSheet( “grabsheet.png”, 30,30)
local turnSheet = sprite.newSpriteSheet( “turnsheet.png”, 30,30)
local pumpSheet = sprite.newSpriteSheet( “pumpsheet.png”, 30,30)
local spriteSet = sprite.newSpriteMultiSet(
{
{ sheet = idleSheet, frames = {1}},
{ sheet = flipSheet, frames = { 1,2,3,4,5,6,7,8,9,10 } },
{ sheet = grabSheet, frames = { 1,2,3,4,5,6,7,8,9,10 } },
{ sheet = turnSheet, frames = { 1,2,3,4,5,6,7,8,9 } },
{ sheet = pumpSheet, frames = { 1,2,3,4,5 } },
})
sprite.add(spriteSet,“idle”,1,1,1,1)
sprite.add(spriteSet,“flip”,1,9,500,1) --sprite.add( spriteSet, sequenceName, startFrame, frameCount, time, [loopParam] )
sprite.add(spriteSet,“grab”,1,9,500,1)
sprite.add(spriteSet,“turn”,1,9,500,1)
sprite.add(spriteSet,“pump”,5,5,500,1)
local player1 = sprite.newSprite(spriteSet)
player1.x = _W / 2;
player1.y = _H / 2;
physics.addBody(player1, {density = 1.0, friction = 0, bounce = 0.2})
player1.myName = “player1”
local function test (event)
if event.phase == “end” then
player1:prepare(“idle”)
player1:play()
end
end
player1:addEventListener(“sprite”, test)
player1:prepare(“idle”)
player1:play()
local ground = display.newRect(0,0,_W, 5)
ground.x = _W / 2
ground.y = _H - 100
ground:setFillColor(0,255,0)
physics.addBody(ground, “static”, {density = 0, friction = 0, bounce = 0})
ground.myName = “ground”
local function jumpPlayer1 (event)
if canJump == true then
player1:applyLinearImpulse( 0, -5, player1.x, player1.y )
player1:prepare(“flip”)
player1:play()
end
canJump = false
end
local blueButton = display.newCircle (0, 0, 30, 30)
blueButton.x = _W / 2
blueButton.y = _H - blueButton.contentHeight / 2 - 10
blueButton:setFillColor(0, 0, 255)
blueButton.alpha = .75
blueButton:addEventListener (“touch”, jumpPlayer1)
function onLocalCollision( self, event )
if ( event.phase == “began” ) then
if (self.myName == “player1” and event.other.myName == “ground”) then
canJump = true
end
end
if ( event.phase == “ended” ) then
canJump = false
end
end
player1.collision = onLocalCollision
player1:addEventListener( “collision”, player1 )
Thanks. [import]uid: 67933 topic_id: 17441 reply_id: 66212[/import]