Корона: вызвать спрайт на ощупь - PullRequest
0 голосов
/ 26 января 2012

Я бы хотел вызвать анимацию спрайта, когда к ней прикасались, и зациклить ее только один раз.

У меня есть анимация спрайта, которая в данный момент срабатывает при касании экрана, но я не знаю, как это сделать.сделайте так, чтобы он анимировался только при касании самого спрайта.

require "sprite"

local sheet1 = sprite.newSpriteSheet( "greenman.png", 75, 105 )

local spriteSet1 = sprite.newSpriteSet(sheet1, 1, 16)

sprite.add( spriteSet1, "green", 1, 12, 700, 1 ) -- play 12 frames every 700 ms
local instance1 = sprite.newSprite( spriteSet1 )
instance1.x = display.contentWidth/2
instance1.y = display.contentHeight/2.8

function kick( event )
  if(event.phase == "ended") then
    instance1:prepare("green")
    instance1:play()
  end
end

Runtime:addEventListener("touch", kick)

Ответы [ 3 ]

1 голос
/ 30 января 2012

используйте анонимную функцию для одноразового кода
, где вы будете кодировать один раз, а потом забудете:

instance1:addEventListener("touch", function(event)
  if(event.phase == "ended") then
    instance1:prepare("green")
    instance1:play()
  end
end)

сделайте это, если хотите, чтобы функция была привязана к объекту,
и может меняться для разных экземпляров,
сохранить функцию kick в instance1 как одно из ее свойств,
, затем добавить / удалить ее:

instance1.kick=function(event)
  if(event.phase == "ended") then
    instance1:prepare("green")
    instance1:play()
  end
end

instance1:addEventListener("touch",instance1.kick)

Если обработчик событий является общим для разных объектов и широко используется:

function kick( event )
  if(event.phase == "ended") then
    instance1:prepare("green")
    instance1:play()
  end
end

instance1:addEventListener("touch", kick)
1 голос
/ 26 января 2012

пожалуйста, попробуйте

instance1:addEventListener( "touch" , kick )

или даже

instance1:addEventListener( "tap" , kick )
0 голосов
/ 04 сентября 2012

просто напишите:

instance1:addEventListener ("touch", kick)

вместо:

Runtime:addEventListener ("touch", kick)
...