使用Gideros中的Lua的getPosition()和setPosition()方法。

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

`` `

点赞
用户2274511
用户2274511

正确的方式是创建单独的层来处理这个动画,像这样:

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-14 10:17:02