using getPosition() and setPosition() in Lua with Gideros
我正在使用 SceneManager。:
现在,问题是我在这个级别上有很多对象,但我只希望其中一个在触摸时上下移动,对象取自纹理包,基本上是一个动画:
如果我做
--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 设置位置时,只有动画会移动,而不是场景中的所有对象;)