我有一个按钮列表(当前图像),我想根据从列表中取得的值更改图像颜色
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'(一个nill值)”
答案 0 :(得分:2)
您的代码将字符串和变量名称视为可互换。第一行:
buttons = {"btn1","btn2","btn3","btn4"}
创建一个字符串表,所以行:
x = buttons[math.random(#buttons)]
会将x
设置为buttons
的随机条目,这些条目是字符串,因此下一行(x:setFrame(2)
)正在调用一个不存在于字符串上的方法。
而是创建一个按钮表:
buttons = {btn1,btn2,btn3,btn4} -- creates a table of buttons
x = buttons[math.random(#buttons)] -- x is a random entry of buttons (a button)