Corona SDK动态宽度对象

时间:2014-07-29 06:42:35

标签: corona

我正试图实施一个游戏机制"挂钩"对象......这是我所谈论的图片:

http://i.stack.imgur.com/m3BSL.jpg

但我对钩子的链/字符串有问题。

我已经尝试使用计时器和enterFrame事件一步一步地创建它,但它们都会在链段之间产生巨大的差距。

我尝试创造整个链条的大图像并动态地改变宽度,但它只是伸展和看起来很有趣:D

也许有人遇到同样的问题?

2 个答案:

答案 0 :(得分:2)

我建议你尝试一下。

  1. 创建整个链
  2. 将其放在容器(display.newContainer)
  3. 更改容器的宽度。
  4. 容器会自动生成蒙版,因此您可以只将部分链隐藏在蒙版下,而不是拉伸。

    此处是容器文档http://docs.coronalabs.com/daily/guide/graphics/container.html

    的链接

答案 1 :(得分:1)

这不是一个完整的答案 - 我已经给了你一个广泛问题的广泛答案,但我希望它可以帮助你创造你需要的东西。

我最近创造了一个非常相似的机制 -

我使用enterFrame来调用一个函数,让我们调用它BuildHook,这将检查钩子的位置和起始点的位置,然后计算需要多少个图像填补空间。我作为我的“钩子”的图形比链条件大一些,允许它重叠,只有在最后一块和钩子之间有足够的空间才能创建一个新图像。

这是钩子向前和向后移动然后在它和起点之间有一个静态的“链”。消费“链接”就像在它们上面向后移动一样,或者当它们远离它们时创建“链接”。

Description of variables

请记住这是伪代码,但应该让您知道如何制作它。

local arrayOfPieces = {}

local function BuildHook()
   -- Bunch of variables you need to get
   startX,startY,
   hookX,hookY,
   lastPieceX,lastPieceY,
   singlePieceWidth

   -- The hook pseudo code
   if(hookX - lastPieceX >= singlePieceWidth) then
      local newPiece = display.newImage('singlePiece.png');
      newPiece.x = lastPieceX + singlePieceWidth/2
      newPiece.y = lastPieceY
      table.insert(arrayOfPieces,newPiece)
   end

   if(hookX < lastPieceX) then
       lastPieceArrayPos = table.getn(arrayOfPieces)
       table.remove(arrayOfPieces,lastPieceArrayPos)
       lastPiece = arrayOfPieces[lastPieceArrayPos - 1]
   end

end