我想在精灵动画被触摸时触发它,并且只让它循环一次。
我有一个精灵动画,目前在屏幕上触发触摸,但我不知道如何制作它,所以它只在精灵本身被触摸时才动画。
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)
对一次性代码使用匿名函数
在这里你会编码一次,然后忘记:
instance1:addEventListener("touch", function(event)
if(event.phase == "ended") then
instance1:prepare("green")
instance1:play()
end
end)
当您希望函数绑定到对象时执行此操作,
并且它可能会在不同的实例中变形,
将instance1
下的kick
函数保存为其属性之一,
然后添加/删除它:
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)
请尝试
instance1:addEventListener( "touch" , kick )
甚至
instance1:addEventListener( "tap" , kick )
只写:
instance1:addEventListener ("touch", kick)
而不是:
Runtime:addEventListener ("touch", kick)