我正在使用SceneManager: 现在,问题是我在这个级别上有很多对象,但我只希望其中一个在触摸时上下移动,该对象取自纹理包,基本上是一个动画:
如果我执行self:getPosition
和self: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
答案 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设置位置时,只有动画会移动,而不是场景中的所有对象;)