Random 触摸Lua';s绘制库基础

Random 触摸Lua';s绘制库基础,random,lua,draw,Random,Lua,Draw,警告:此问题仅适用于已购买并了解Draw库的Touch Lua用户 请参阅此问题的底部以查看完整程序。我在开头使用的代码片段是该程序的一部分(NUMPAD.LUA) 好的,现在来回答问题: •在“b”和“x”之间使用“.”有什么用?还是“b”和“draw”?等等 •桌子如何设置按钮?请说得非常具体 •为什么第7行和第8行中有“+”、“*”和“(j-1)”字样 •那里的高度和宽度是什么?我以为只有x和y function createButtons() buttons = { } lo

警告:此问题仅适用于已购买并了解Draw库的Touch Lua用户

请参阅此问题的底部以查看完整程序。我在开头使用的代码片段是该程序的一部分(NUMPAD.LUA)

好的,现在来回答问题:

•在“b”和“x”之间使用“.”有什么用?还是“b”和“draw”?等等

•桌子如何设置按钮?请说得非常具体

•为什么第7行和第8行中有“+”、“*”和“(j-1)”字样

•那里的高度和宽度是什么?我以为只有x和y

function createButtons()
   buttons = { }
   local c = 1
   for i = 1, 4 do
      for j = 1, 3 do
         local b = { }
         b.x = 80 + 60 * (j-1)
         b.y = 160 + 60 * (i-1)
         b.width = 40
         b.height = 40
         b.color = draw.blue
         b.draw = drawButton
         b.action = digitAction
         buttons[c] = b
         c = c + 1
      end
   end
   buttons[1].title = '7'
   buttons[2].title = '8'
   buttons[3].title = '9'
   buttons[4].title = '4'
   buttons[5].title = '5'
   buttons[6].title = '6'
   buttons[7].title = '1'
   buttons[8].title = '2'
   buttons[9].title = '3'
   buttons[10].title = '0'
   buttons[11].title = '.'
   buttons[11].action = dotAction
   buttons[12].title = 'C'
   buttons[12].color = draw.orange
   buttons[12].action = clearAction
end
最后,参考整个程序。。。 •点击按钮时,按钮如何知道?具体来说,代码行是什么,它是如何工作的?(顺便说一句,我对轨道接触的理解很模糊)

功能数字化(按钮)
如果string.len(display.title)<16,则
系统警报(“tock”)
如果display.started,那么
display.title=display.title。。按钮标题
其他的
如果button.title~=“0”,则
display.title=按钮.title
display.start=true
结束
结束
其他的
系统警报(“叮当声”)
结束
结束
功能点操作(按钮)
如果string.find(display.title,'.',1,true),则
系统警报(“叮当声”)
其他的
display.title=display.title...”
display.start=true
系统警报(“tock”)
结束
结束
功能clearAction(按钮)
系统警报(“tock”)
display.title='0'
display.start=false
结束
函数createDisplay()
显示={}
显示x=60
显示y=100
显示宽度=200
显示高度=40
display.title='0'
display.color=draw.red
display.start=false
结束
函数createButtons()
按钮={}
局部c=1
对于i=1,则为4
对于j=1,3 do
局部b={}
b、 x=80+60*(j-1)
b、 y=160+60*(i-1)
b、 宽度=40
b、 高度=40
b、 颜色=draw.blue
b、 draw=drawButton
b、 动作=数字化
按钮[c]=b
c=c+1
结束
结束
按钮[1]。标题='7'
按钮[2]。标题='8'
按钮[3]。标题='9'
按钮[4]。标题='4'
按钮[5]。标题='5'
按钮[6]。标题='6'
按钮[7]。标题='1'
按钮[8]。标题='2'
按钮[9]。标题='3'
按钮[10]。标题=“0”
按钮[11]。标题='
按钮[11]。操作=点操作
按钮[12]。标题='C'
按钮[12]。颜色=draw.orange
按钮[12]。操作=清除操作
结束
函数drawDisplay()
draw.setfont('Helvetica',20)
draw.setlinestyle(2,‘对接’)
本地x1,y1=显示.x,显示.y
本地x2,y2=x1+显示宽度,y1+显示高度
draw.roundedrect(x1、y1、x2、y2、10,显示颜色)
局部w,h=draw.stringsize(display.title)
局部x=x2-10-w
本地y=y1+(显示高度-h)/2
draw.string(display.title、x、y、draw.black)
结束
功能按钮(b)
draw.setfont('Helvetica',18)
draw.setlinestyle(2,‘对接’)
局部x1,y1=b.x,b.y
局部x2,y2=x1+b.宽度,y1+b.高度
绘制圆形图(x1、y1、x2、y2、10、b颜色)
局部w,h=图纸stringsize(b.标题)
局部x=b.x+(b.width-w)/2
局部y=b.y+(b.高度-h)/2
draw.string(b.title,x,y,draw.black)
结束
函数drawButtons()
对于i=1,#按钮可以
按钮[i]。绘制(按钮[i])
结束
结束
函数查找按钮(x,y)
对于i=1,#按钮可以
本地b=按钮[i]
如果x>b.x和xb.y和y

非常感谢您提供的任何帮助!我知道这是很多问题,但这些知识真的可以帮助我前进

这个程序特别使用表格来表示按钮,它这样做是为了使它更易于管理。高度和宽度是相同的。如果您是绘图库的新手,那么查看这样的代码只会让您感到困惑。你的大多数问题实际上都是关于OOP的


而且这个问题现在可能不适合堆栈溢出。如果您需要有关此主题的帮助/小教程,请随时在Touch Lua论坛上PM我,我的用户名是warspyking,但目前您需要修改或删除此问题。

此程序特别使用表格表示按钮,这样做是为了使其更易于管理。高度和宽度是相同的。如果您是绘图库的新手,那么查看这样的代码只会让您感到困惑。你的大多数问题实际上都是关于OOP的

而且这个问题现在可能不适合堆栈溢出。如果您需要关于这个主题的帮助/小教程,请随时在Touch Lua论坛上PM我,我的用户名是warspyking,但目前您需要修改或删除此问题

警告:此问题仅适用于已购买Touch Lua的用户 并对绘图库有一定的了解

从什么时候开始,你必须购买一些东西来回答编程问题?你所有的问题都是关于Lua的基础知识

“b”和“x”之间的“.”有什么用?还是“b”和“draw”?等等

点运算符用于索引表成员。因此
b.x
将为您提供属于表
b
中键
“x”
的值。它的语法是
b[“x”]

这部电影怎么样
function digitAction(button)
   if string.len(display.title) < 16 then
  sys.alert('tock')
  if display.started then
     display.title = display.title .. button.title
  else
     if button.title ~= '0' then
        display.title = button.title
        display.started = true
     end
  end
   else
  sys.alert('tink')
   end
end

function dotAction(button)
   if string.find(display.title, '.', 1, true) then
  sys.alert('tink')
   else
  display.title = display.title .. '.'
  display.started = true
  sys.alert('tock')
   end
end

function clearAction(button)
   sys.alert('tock')
   display.title = '0'
   display.started= false
end

function createDisplay()
   display = { }
   display.x = 60
   display.y = 100
   display.width = 200
   display.height = 40
   display.title = '0'
   display.color = draw.red
   display.started = false
end

function createButtons()
   buttons = { }
   local c = 1
   for i = 1, 4 do
  for j = 1, 3 do
     local b = { }
     b.x = 80 + 60 * (j-1)
     b.y = 160 + 60 * (i-1)
     b.width = 40
     b.height = 40
     b.color = draw.blue
     b.draw = drawButton
     b.action = digitAction
     buttons[c] = b
     c = c + 1
  end
   end
   buttons[1].title = '7'
   buttons[2].title = '8'
   buttons[3].title = '9'
   buttons[4].title = '4'
   buttons[5].title = '5'
   buttons[6].title = '6'
   buttons[7].title = '1'
   buttons[8].title = '2'
   buttons[9].title = '3'
   buttons[10].title = '0'
   buttons[11].title = '.'
   buttons[11].action = dotAction
   buttons[12].title = 'C'
   buttons[12].color = draw.orange
   buttons[12].action = clearAction
end

function drawDisplay()
   draw.setfont('Helvetica', 20)
   draw.setlinestyle(2, 'butt')
   local x1, y1 = display.x, display.y
   local x2, y2 = x1 + display.width, y1 + display.height
   draw.roundedrect(x1, y1, x2, y2, 10, display.color)
   local w, h = draw.stringsize(display.title)
   local x = x2 - 10 - w
   local y = y1 + (display.height - h)/2
   draw.string(display.title, x, y, draw.black)
end

function drawButton(b)
   draw.setfont('Helvetica', 18)
   draw.setlinestyle(2, 'butt')
   local x1, y1 = b.x, b.y
   local x2, y2 = x1+b.width, y1+b.height
   draw.roundedrect(x1, y1, x2, y2, 10, b.color)

   local w, h = draw.stringsize(b.title)
   local x = b.x + (b.width - w)/2
   local y = b.y + (b.height - h)/2
   draw.string(b.title, x, y, draw.black)

end

function drawButtons()
   for i = 1, #buttons do
  buttons[i].draw(buttons[i])
   end
end

function lookupButton(x, y)
   for i = 1, #buttons do
  local b = buttons[i]
  if x > b.x and x < b.x+b.width and y > b.y and y < b.y+b.height then
     return b
  end
   end
   return nil
end

function drawScreen()
   draw.beginframe()
   draw.clear()
   drawDisplay()
   drawButtons()
   draw.endframe()
end

function touchBegan(x, y)
   local b = lookupButton(x, y)
   if b then
  b.action(b)
   end
end

function touchMoved(x, y)
end

function touchEnded(x, y)
end

function init()
   draw.setscreen(1)
   draw.settitle('Num Pad')
   draw.clear()
   draw.tracktouches (touchBegan, touchMoved, touchEnded)

   createButtons()
   createDisplay()
end

function mainloop()
   while true do
  draw.doevents()
  drawScreen()
  draw.sleep(30)
   end
end

function main()
   init()
   mainloop()
end

-- start program
main()