Ok, I have done some more investigation and this is what I have came up with:
If I play each sequence just by itself in a loop - it is correct.
As soon as I run all my code that controls the player and changes the sequences it mixes frames from both spritesheets. If I am changing from right to left it picks frame 14 from the other sheet, and frame 1 when i run vice versa.
So I guess that my logic is bad…
\_W = display.contentWidth
\_H = display.contentHeight
system.setIdleTimer( false )
local txt = display.newText("DEBUG: ", 200, 10, native.systemFontBold, 14)
SPRITE\_STATE = ""
GUI\_STATE = ""
display.setStatusBar( display.HiddenStatusBar )
local physics = require("physics")
system.activate( "multitouch" )
physics.start()
physics.setGravity(0, 0)
physics.setScale(40)
require "sprite"
flyRightSheet = sprite.newSpriteSheetFromData( "right.png", require("right").getSpriteSheetData() )
flyLeftSheet = sprite.newSpriteSheetFromData( "left.png", require("left").getSpriteSheetData() )
spriteSet1 = sprite.newSpriteMultiSet(
{
{ sheet = flyRightSheet, frames = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60 }},
{ sheet = flyLeftSheet, frames = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}},
}
)
sprite.add(spriteSet1,"fly\_right",1,40,1000,0)
sprite.add(spriteSet1,"turn\_left",41,20,1000,0)
sprite.add(spriteSet1,"fly\_left",61,40,1000,0)
sprite.add(spriteSet1,"turn\_right",101,20,1000,0)
local function getSpriteSeq(event)
SPRITE\_STATE = event.sprite.sequence
txt.text = event.sprite.sequence
end
local function spriteListener( event )
if(event.sprite.currentFrame==40) then
if(GUI\_STATE=="TL") then
player:prepare("turn\_left")
player:play()
GUI\_STATE =""
end
end
if(SPRITE\_STATE=="turn\_left" and event.sprite.currentFrame==20) then
player:prepare("fly\_left")
player:play()
end
if(event.sprite.currentFrame==40) then
if(GUI\_STATE=="TR") then
player:prepare("turn\_right")
player:play()
GUI\_STATE =""
end
end
if(SPRITE\_STATE=="turn\_right" and event.sprite.currentFrame==20) then
player:prepare("fly\_right")
player:play()
end
txt.text = SPRITE\_STATE .. " - " .. event.sprite.currentFrame
end
player = sprite.newSprite( spriteSet1 )
player.xScale = 1.0
player.yScale = 1.0
player.x = 200
player.y = 180
player.objectType = "player"
player:addEventListener("sprite", getSpriteSeq)
player:addEventListener( "sprite", spriteListener )
physics.addBody(player,{friction=.9, bounce = .1})
player:prepare("fly\_right")
player:play()
local function fly( event )
if not (player==nil) then
--\>player:applyLinearImpulse(0, -.2, player.x, player.y)
end
end
local function moveforward( event)
--\> Lagra startpunkterna när man brjar dra
if(event.phase=="began") then
x0 = event.x
end
--\> Check direction of swipe
if(event.phase=="moved") then
if(player==nil) then
else
if(x0 \< event.x) then
--\> FLYGFRAMÅT
--\>player:applyLinearImpulse(.02, 0, player.x, player.y)
if(SPRITE\_STATE=="fly\_left") then
display.getCurrentStage():setFocus(nil)
--\>player:scale(1, 1)
GUI\_STATE = "TR"
--\>player:prepare("turn\_right")
--\>player:play()
end
else
--\> FLYGBAKÅT
--\>player:applyLinearImpulse(-.02, 0, player.x, player.y)
if(SPRITE\_STATE=="fly\_right") then
display.getCurrentStage():setFocus(nil)
--\>player:scale(-1, 1)
GUI\_STATE = "TL"
--\>player:prepare("turn\_left")
--\>player:play()
end
end
end
end
display.getCurrentStage():setFocus( nil )
end
local function onCollision ( event )
local type1 = event.object1.objectType
local type2 = event.object2.objectType
end
function reStart()
createPlayer()
Runtime:addEventListener ( "collision", onCollision )
end
local function onPostCollision( event )
txt.text = event
end
Runtime:addEventListener("tap", fly)
Runtime:addEventListener("touch", moveforward)
I really hope someone can look at this and try to figure out why I am having thsi problems with the frames.
Best regards, Joakim
[import]uid: 81188 topic_id: 15320 reply_id: 56940[/import]