在Lua中使用Gideros中的getPosition()和setPosition()

时间:2014-06-25 22:01:26

标签: lua gideros

我正在使用SceneManager: 现在,问题是我在这个级别上有很多对象,但我只希望其中一个在触摸时上下移动,该对象取自纹理包,基本上是一个动画:

如果我执行self:getPositionself:setPosition,此级别中的所有对象都会更改其位置,当用户触摸屏幕时,如何更改self.anim[frame]的位置?

- 在Play.lua中

self.anim = 
{
    Bitmap.new(pack:getTextureRegion("flappy1.png", true)),
    Bitmap.new(pack:getTextureRegion("flappy2.png",true)),
}

然后是这样的:

self:addChild(self.anim[1])
self:addEventListener(Event.TOUCHES_BEGIN, self.whenTouched, self)
self:addEventListener(Event.TOUCHES_END, self.whenuntouched, self)

function Play: whenTouched()
  x,y = self:getPosition()
  self:setPosition(x, y-20)
end

function Play: whenuntouched()
  x,y = self:getPosition()
  self:setPosition(x, y+20)
  print("down")
end

1 个答案:

答案 0 :(得分:2)

正确的方法是为此动画创建单独的图层,如:

self.animationHolder = Sprite.new()
self:addChild(self.animationHolder)
self.anim = 
{
   Bitmap.new(pack:getTextureRegion("flappy1.png", true)),
   Bitmap.new(pack:getTextureRegion("flappy2.png",true)),
}
self.animationHolder:addChild(self.anim[1])

然后你需要添加/删除self.animationHolder中的子项来为它设置动画(我实际上建议使用MovieClip,但这是另一个主题)

当你为self.animationHolder设置位置时,只有动画会移动,而不是场景中的所有对象;)