1

SceneManager を使用しています。問題は、このレベルに多くのオブジェクトがあることですが、そのうちの 1 つだけをタッチで上下に動かしたいということです。オブジェクトはテクスチャ パックから取得され、基本的にはアニメーションです。

このレベルのすべてのオブジェクトの位置を変更する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
4

1 に答える 1

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 の位置を設定すると、シーン上のすべてのオブジェクトではなく、アニメーションのみが移動します;)

于 2014-07-14T10:17:02.497 に答える