1

我正在使用 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
4

1 回答 1

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 设置位置时,只有动画会移动,而不是场景中的所有对象;)

于 2014-07-14T10:17:02.497 回答