# Quicklib-For-OpenComputers **Repository Path**: Bai-Tian/Quicklib-For-OpenComputers ## Basic Information - **Project Name**: Quicklib-For-OpenComputers - **Description**: Minecraft中OpenComputers mod程序极速开发库 - **Primary Language**: Lua - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2020-05-04 - **Last Updated**: 2021-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Quicklib-For-OpenComputers 这是一个能帮助你开发oc程序的非常轻量的库。你可以非常简单的进行创建控件、绑定事件等操作。 # APIs 创建控件: `qk_new(包含初始化数据的表:table,控件元表:table)` 新建一个控件,返回一个控件id值,当你对控件进行编辑或者删除操作时会用到这个id。 当第二个参数`控件元表`不存在时此函数默认新建一个box控件。 因为目前只有一个box控件,所以第二个参数暂时没有任何用处。 删除控件: `qk_del(控件的id:number)` 删除此id的控件。 编辑控件: `qk_edit(控件的id:number,要编辑的内容组成的表:table)` 只会改变x,y,dx,dy,fc,bc,char,rf,text,pic这几种属性 如果想改变其他的属性请看下文`对控件属性进行直接编辑` 隐藏控件: `qk_hide(控件的id:number)` 不再对控件的UI进行刷新,如果不清屏的话会残留图像。 ## box控件 `qk_new(包含初始化数据的表:table)` 在屏幕上显示一个长方形,返回一个控件id值,当你对控件进行编辑或者删除操作时会用到这个id。 包含初始化数据的表的格式如下 | 变量 | 描述 | |----|----| `x=1`代表x的默认参数为1|- `:draw()`代表此函数使用`self`|- x=1|控件的x坐标 y=1|控件的y坐标 dx=5|控件的x方向长度 dy=1|控件的y方向长度 rf=1(0.1的倍数)|刷新间隔时间。当rf=0时不会执行绘制函数,是`qk_hide()`的原理 :draw()|绘制函数。每隔`rf`段时间执行一次,不定义此函数则会使用默认绘制函数 以下属性影响默认的绘制函数`draw()`|- text|一个表,控制显示的文本。格式`{偏移x,偏移y,文本}`,偏移指以控件坐标为基准。
因为可以显示很多个文本,所以需要`text={{偏移x,偏移y,文本},{偏移x,偏移y,文本}...}`这样使用 fc=0X000000|前景色 bc=0XFFFFFF|背景色 char=" "|fill时的字符 pic |一个表,此表控制着彩色像素的绘制,更多信息见下文`关于pic表` 以下为各种事件函数,不定义则无事发生|- :touch()|点击事件激活的函数 :drag()|拖拽事件激活的函数 :drop()|释放鼠标激活的函数 :scroll()|滚动事件激活的函数 :walk()|行走事件激活的函数 关于网卡事件的函数和属性|- modem_sender|判断收到的消息是否来自此地址,缺省则不判断 modem_port|判断收到的消息是否来自此端口,缺省则不判断 modem_distance|判断收到的消息的距离(有线网卡为0),缺省则不判断 modem_msg|判断收到消息的第一个参数是否与此变量相同,缺省则不判断 :modem(...)|以上条件全部满足后执行此函数。
传入的不定参数`...`为接收到的从第二个参数开始到最后的消息 注意:此网卡事件只能做到简单的判断,复杂需求请自行实现。如果接收到的消息是多个参数,modem_msg只能判断接收到的消息的第一个参数。 ### 对控件属性进行直接编辑: 表`qk_data`记录着所有创建过的控件,控件的id值即为控件在此表的索引。 通过此表可以直接访问或修改控件的属性,例:`qk_data[控件的id][属性名称]` 在使用`qk_del`删除控件时只会把控件的type类型改为"n",不可直接赋值nil。 ### 关于pic表: 此表控制了每个字符位置的字符、前景色、背景色,可以用来做彩色的图片。 一个字符位的格式:`pic[行][列]={要显示的字符,背景色,前景色}` 例: ``` p=qk_new() pic={} pic[1]={{"a",0XFF00FF,0X0024FF},{"b",0X0024FF,0XFF00FF}} --第一行 pic[2]={{"c",0X0024FF,0XFF00FF},{"d",0XFF00FF,0X0024FF}} --第二行 qk_edit(p,{pic=pic}) ``` 从上面的例子可以看出,`pic[行][列]`即代表一个字符位置,内容为`{要显示的字符,背景色,前景色}`。如果要显示的字符是一个字符串,后面又没有要显示的字符,则会全部显示出来,否则会被后面的字符覆盖。 注意,当pic表存在时,绘制函数将不会绘制原先普通的长方形了,`fc``bc``char``text`也完全失效。此时`dx` `dy`参数也仅影响某些鼠标事件的范围,不会对绘制产生影响。 ### 关于图层和刷新: 因为刷新机制是按照id顺序进行绘制,所以当控件的UI重叠时,新创建的控件会在旧的上方。