【问题标题】:Corona SDK dynamic width objectsCorona SDK 动态宽度对象
【发布时间】:2014-07-29 06:42:35
【问题描述】:

我正在尝试实现“挂钩”对象的游戏机制......这是我正在谈论的图片:

但我对钩子的链条/绳子有问题。

我尝试在钩子运行时逐步创建它,使用计时器和enterFrame 事件,但它们都会在链段之间产生巨大的间隙。

我尝试过创建整个链条的大图像并动态改变宽度,但它只会拉伸并且看起来很有趣:D

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

【问题讨论】:

    标签: coronasdk


    【解决方案1】:

    我建议你尝试关注。

    1. 创建整条链
    2. 将其放入容器 (display.newContainer)
    3. 改变容器的宽度。

    容器会自动生成遮罩,因此您无需拉伸,而是将链的一部分隐藏在遮罩下。

    这里是容器文档http://docs.coronalabs.com/daily/guide/graphics/container.html的链接

    【讨论】:

    • 这是一个非常干净的解决方案,应该比我上面的更受欢迎。
    • 听起来不错,但不适用于我的 2013 corona 版本。我今天会更新并检查它。非常感谢!
    【解决方案2】:

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

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

    我用enterFrame调用了一个函数,我们叫它BuildHook,这会检查钩子的位置和起点的位置,然后计算需要多少张图片来填写空间。我作为“钩子”的图形部分大于链片,允许它重叠,并且只有在最后一块和钩子之间创建了足够的空间后才放置一个新图像。

    这意味着它是向前和向后移动的钩子,然后在它和起点之间有一个静态的“链”。要么消耗“链接”,因为它会向后移动,要么创建“链接”,因为它远离它们。

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2014-01-10
      • 2014-08-02
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2020-07-23
      相关资源
      最近更新 更多