我正在使用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发布于 2014-07-14 10:17:02
正确的方法是为这个动画创建单独的层,如下所示:
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设置位置时,只有动画才会移动,而不是场景中的所有对象;)
https://stackoverflow.com/questions/24419337
复制相似问题