使用math.random显示相同的图片?

我正在使用Corona SDK工作,我想显示随机颜色。 这是我的代码,但是我的颜色总是相同的。 为什么呢?

local boxColors = {
        "BoxColors/Gold.png",
        "BoxColors/Blue.png",
        "BoxColors/Green.png",
        "BoxColors/Orange.png",
        "BoxColors/Purple.png",
        "BoxColors/Rose.png",
        "BoxColors/Yellow.png"
    }

groundColor =display.newImage(boxColors[math.random(#boxColors)],0,0)

谢谢和问候

点赞
用户3775328
用户3775328

下面是我很久以前写的一个整理函数。由于 math.random 的随机性有些玄学,因此下面的函数会让它更加具有冒险精神。

func shuffleArray(myArray)

  for i=0,30 do -- 重复以下步骤 30 次:
    for temp = 1, #myArray do
        n = math.random(1, #myArray) -- 从 myArray 中选择一个随机索引并将其赋值给 n。
        temp1 = myArray[temp] -- 将循环次数(temp)作为索引从 myArray 中获取值,并将其赋值给 temp1。
        myArray[temp] = myArray[n] -- 用上面选取的随机索引替换从 myArray 中取得的 temp 索引。
        myArray[n] = temp1 -- 用 temp 的值替换所选的随机索引。
    end
  end

return myArray -- 返回重新整理好的数组。
end

只需调用该函数并将一个数组传递给它,或者您可以按照您的需求进行编辑!

此致,

Krivvenz。

2016-05-10 13:57:40
用户6312494
用户6312494

我不知道你的代码怎么样,但我试过了,在我的代码里它可以运行,我只需要在实例化新的图片之前添加groundColor:removeSelf(),因为在Corona中它没有被覆盖。

如果你只是改变颜色,试试这样:

local centerX = display.contentCenterX
local centerY = display.contentCenterY

local colors = {
    { 1,1,0 }, -- yellow
    { 0,0,1 }, -- blue
    { 0,1,0 }, -- green
    { 1,0,0 }, -- red
}

rect = display.newRect(centerX, centerY, 100, 100)
rect.fill = colors[math.random(#colors)]

function onTouch( event )
    if event.phase == "began" then
        rect.fill = colors[math.random(#colors)]
    end
end
rect:addEventListener( "touch", onTouch )
2016-05-11 01:58:51