如何在触摸时在两个对象之间创建一条线 - corona

我正在使用corona sdk制作一个游戏,其中星星随机落下屏幕,直到用户输掉。见代码:

现在为了使我的游戏正常运行,我需要能够在每个星星之间画线。也就是说,我需要玩家触摸每个星星,当他这样做时,会在他触摸的星星和他之前触摸的星星之间创建一条线。我知道如何画线,但不确定如何在使用函数创建的两个对象之间画线。有谁知道如何做这个吗?提前致谢!

点赞
用户2260604
用户2260604

首先要记住,StackOverflow是一个为你解决真正面临的问题提供答案的地方。你应该包含关于你尝试过的、你要做什么的详细信息。

这个问题比较宽泛,因为它几乎就是在求最终解决方案。在将来,你应该将你要解决的问题拆分开来。首先,我怎么知道星星是否被触摸了?我如何保存有关这个星星的信息?我如何检查是否触摸了两个星星?我如何画一条线?

上述所有问题都非常基本,应该很容易解决。

既然你说你只是不确定怎么做,我将提供一些启发,而不是一个解决方案。


首先创建一个用于保存星星的数组。

local touchedStarArray = {}

然后为每个星星对象添加一个触摸监听器,如

(请阅读更多有关触摸监听器的信息:CoronaDocs: addEventListener

local star = display.newImage( "star.png" )

function star:touch( event )
    if event.phase == "began" then

        -- 将触摸的星星插入数组
        table.insert(touchedStarArray, self)

        -- 检查数组是否已经包含两个星星
        if table.getn(touchedStarArray) >= 2 then

           -- 如果包含,则在两个星星之间画一条线
           local line = display.newLine( touchedStarArray[1].x, touchedStarArray[1].y, touchedStarArray[2].x, touchedStarArray[2].y)

           -- 并清空数组
           touchedStarArray = {}
        end
    end
end

star:addEventListener( "touch", star)
2014-08-11 11:01:29