【问题标题】:changing sprite frame depending on random value根据随机值改变精灵帧
【发布时间】:2015-04-15 13:12:46
【问题描述】:

我有一个按钮列表(当前为图像),我想根据从列表中获取的值更改图像颜色

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 值)"

【问题讨论】:

  • setSequence 在哪里被调用?

标签: list lua sprite-sheet


【解决方案1】:

您的代码将字符串和变量名视为可互换的。第一行:

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)

【讨论】:

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