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

using getPosition() and setPosition() in Lua with Gideros

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

如果我做self:getPositionself:setPosition,这个关卡中的所有对象都会改变它们的位置,当用户触摸屏幕时我如何改变只有self.anim[frame]的位置?

--in Play.lua

1
2
3
4
5
self.anim =
{
    Bitmap.new(pack:getTextureRegion("flappy1.png", true)),
    Bitmap.new(pack:getTextureRegion("flappy2.png",true)),
}

然后是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
2
3
4
5
6
7
8
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 设置位置时,只有动画会移动,而不是场景中的所有对象;)