根据随机值更改精灵帧。

我有一个按钮列表(目前是图像),我想根据从列表中取出的值更改图像颜色。

buttons = {"btn1","btn2","btn3","btn4"}

local buttonSheetData = {
    width = 150,
    height = 150,
    numFrames = 2,
    sheetContentWidth = 300,
    sheetcontentheight = 150,
}

local buttonSheet = graphics.newImageSheet("image/buttonSS.png", buttonSheetData)

local sequenceData = {
    {name = "black", start = 1, count = 1},
    {name = "red", start = 2, count = 1}
}

local btn1 = display.newSprite(buttonSheet, sequenceData)
btn1.x = 100
btn1.y = 90

local btn2 = display.newSprite(buttonSheet, sequenceData)
btn2.x = 200
btn2.y = 230

local btn3 = display.newSprite(buttonSheet, sequenceData)
btn3.x = 300
btn3.y = 90

local btn4 = display.newSprite(buttonSheet, sequenceData)
btn4.x = 400
btn4.y = 230

x = buttons[math.random(#buttons)]
x:setFrame(2)

当前每个圆圈都是黑色的。每次运行代码时,我希望从列表中随机取一个值并将颜色更改为红色。因此,每次运行代码时都会有一个不同的红色圆圈。

我一直收到错误信息:“尝试调用方法'setSequence'(空值)”。

点赞
用户2726734
用户2726734

你的代码把字符串和变量名当作是可以交换使用的。第一行:

buttons = {"btn1","btn2","btn3","btn4"}

创建了一个字符串的表,所以下一行:

x = buttons[math.random(#buttons)]

将把 x设置为 buttons中的一个随机项,这些项都是字符串,所以下一行 (x:setFrame(2)) 调用了一个在字符串上不存在的方法。

相反,创建一个按钮表格:

buttons = {btn1,btn2,btn3,btn4} -- 创建一个按钮表格
x = buttons[math.random(#buttons)] -- x是buttons的一个随机项(即一个按钮)
2015-02-14 19:21:08