首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Gideros在Lua中使用getPosition()和setPosition()

用Gideros在Lua中使用getPosition()和setPosition()
EN

Stack Overflow用户
提问于 2014-06-25 22:01:25
回答 1查看 1.6K关注 0票数 1

我正在使用SceneManager。:现在的问题是,我在这个级别上有很多对象,但我只希望其中一个在触摸时上下移动,对象是从纹理包中提取的,基本上是一个动画:

如果我执行self:getPositionself:setPosition,那么这个级别上的所有对象都会更改它们的位置,当用户触摸屏幕时,如何更改仅self.anim[frame]的位置?

--在Play.lua中

代码语言:javascript
复制
self.anim = 
{
    Bitmap.new(pack:getTextureRegion("flappy1.png", true)),
    Bitmap.new(pack:getTextureRegion("flappy2.png",true)),
}

然后是这样的:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 10:17:02

正确的方法是为这个动画创建单独的层,如下所示:

代码语言:javascript
复制
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设置位置时,只有动画才会移动,而不是场景中的所有对象;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24419337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档