# litestep里IF语句的简单介绍 - Litestep专区 - 雨滴社区 - Powered by Discuz!
 找回密码
 点击注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2798|回复: 5

[技术讨论] litestep里IF语句的简单介绍

[复制链接]

签到天数: 268 天

[LV.8]以坛为家I

发表于 2013-12-1 20:54:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?点击注册

x
不小心又把SM君以前的视频教程看了一遍,真的感觉很有爱,于是想写点东西,这些东西在模块和litestep的readme里都一带而过,很多东西我也是摸索和揣测,可能会有错误。

对有点计算机语言基础的人应该有点用,即使没接触过计算机语言也没关系,因为真的很简单,我也尽量用通俗的语言去解释,一看就懂。

litestep的编写(不包括Lslua),算不得一种语言,充其量是别人编写好dll后留出公共接口给我们的应用,我们只要了解和阅读那些白话化的命令就好了,但它实际上与c又有着千丝万缕的联系,书写时尽量遵循c的风格和规范,如果要写稍微复杂些的主题,一些基本的东西应该要了解,比如算术运算,逻辑运算,关系运算,转义符的使用,和简单的HTML语言。我们这里稍微说一下IF的使用,Litestep里(不包括Lslua)好像也只有IF 这个条件语句了,switch,while,for语句应该没有,一般人做主题也范不着太复杂,做复杂的都直接用lua了。

Litestep里的IF语句有4种格式,IF---Endif ,IF---Else---Endif,IF---Elseif---Endif,IF---Elseif---Elseif--.......Endif.和c不同,这里的IF和ENDif一定是配对出现的,可以嵌套,可以用goto,但是不建议用,goto是把双轫剑,用得不好容易破坏结构。
IF里的条件表达式可以用关系运算符,比如c里是&&和||,litestep里是and和or。
-==================================================
if globalTime = true
ClockText                "<FontSize=30>[time('ii:nn')]</Font>  <FontSize=17>[date('dd.mm.yy')]</Font>"
elseif globalTime = false
ClockText                "<FontSize=30>[time('hh:nn')]</Font> [date('dd.mm.yy')]"
endif
这里定义了一个时间标签,clock是个显示时间的label(button),litestep里标签和按钮并没有明显的界限,我认为可以做点击动作的就是button,只显示信息不定义动作的就是label。globalTime是个自定义好的变量(严格来说是常量,类似于c的#define),它自定义了true和false两种值,注意这里的值是ASCII值,即使定义为数字它也是ASCII值,不好做算术运算的。<FontSize=30>  </Font>这样的是不是眼熟?label的text显示是可以直接用HTML语言和转义符的,也就是说只要是文本,颜色,大小,字体,回车换行,空格,可以在一行里就能很简单的定义了。

litestep对自定义变量很宽松,c里面要求对变量要先定义后使用,LS里好像没有这种问题,因为在这段代码后面再去定义globalTime,加载和使用的时候也是没问题的。但最好还是遵循c的语法规范来使用。

整段话的意思是:如果globalTime值为true,那么clock这个按钮就以30的字体大小显示时间,17的字体大小显示日期。如果globalTime值为false,那么clock这个按钮就以30的字体大小显示时间,clockfonthight定义的字体大小显示日期。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

这里还有一个涉及IF的简单说明用法:传送门


-================================================
再举个完整些的例子吧。之前做了个litestep主题 ,名叫定格。。传送门
它的桌面壁纸变换,各部件伸缩,各部件素材的变换,都用到了IF。这里只截取其中小段以做说明,语句前有分号的语句是无效的。
if styleon=0
xTaskbarImage                        taskbarBackground1.png
elseif styleon=1
xTaskbarImage                        taskbarBackground.png
endif

if styleon=0
;ControlOnleftClickup !blue
ControlOnleftClickup  !execute        [!xTextSaveEvar @$ConfigDir$themevars.rc@ @styleon@ @1@][!WallPaper .center  "$WallpaperDir$asd121.jpg"][!wallpaper .change][!refresh]
*WallPaper .center "$WallpaperDir$1456.jpg"
elseif styleon=1
;ControlOnleftClickup !black
ControlOnleftClickup !execute        [!xTextSaveEvar @$ConfigDir$themevars.rc@ @styleon@ @0@][!WallPaper .center "$WallpaperDir$1456.jpg"][!wallpaper .change][!refresh]
*WallPaper .center "$WallpaperDir$asd121.jpg"
endif

整段的意思是:如果styleon这个自定义的变量值当前为0,左键点击control这个label时,就把styleon的值置为1,壁纸换为asd121.jpg,任务栏的背景图换为taskbarBackground.png。
如果styleon这个自定义的变量值当前为1,左键点击control这个label时,就把styleon的值置为0,壁纸换为1456.jpg,任务栏的背景图换为taskbarBackground1.png。


当然任务栏的背景图变换不用IF也可以,我们可以用它自己的bang命令,!xTaskbarrefresh xTaskbar xTaskbarimage "$ThemeDir$th\images\taskbarBackground1.png"把这一句写到点击control这个label的动作里就可以了。


这段代码里至少用到了4个模块,xtaskbar,xtextedit,xlabel,lswchanger,具体的命令要去了解这些模块的readme 了,这是玩LS的基础。
=-----------------------------------------------------
总之,如果只需要做个漂亮的界面的话,比如各模块的搭配,堆叠,调整,是非常简单的,不需要任何基础;但是要做复杂的效果甚至人机交互的图形界面,还是需要些计算机知识的。另外在阅读LS和各模块的readme时,多看多想。
再举个简单的例子吧,比如group,我给它的定义是相同属性和行为的集合。
xxxWidth  295
xxxHeight  83
xxxWindowzOrder
xxxBehindWindow xLabel runDialogBox
xxxAlwaysOnTop
xxxStartHidden

label1addtogroup xxx
label2addtogroup xxx
label3addtogroup xxx
label4addtogroup xxx
这段的意思:前面一小段定义了xxx这个group的一些属性,是不是有些像c的struct或c++的class的意味?那么后一小段的label1,label2,label3,label4只用一行代码就有了xxx的这些属性,是不是有些继承的意味?而在之后要写的代码里,label1,label2,label3,label4也可以写出它们自己的行为和属性,是不是有了些派生的意味?

readme里提供的命令都是死的,我们玩的时候一定要灵活运用,也就是通常所说的算法。比如传送门,为了实现拖控时音量的调整的多少,就将handle这个label的X位置移动多少与音量挂钩。

评分

参与人数 2心动值 +2 活跃值 +10 技术值 +2 收起 理由
语笑嫣然 + 1 + 1 (-`ω′-)
萝莉头 + 1 + 10 + 1 加分不解释

查看全部评分

回复

使用道具 举报

签到天数: 189 天

[LV.7]常住居民III

发表于 2013-12-1 21:24:31 | 显示全部楼层
许久不见O(∩_∩)O
没看懂,但是对于玩LS的同学应该是非常有用的分享

点评

\(^o^)/谢谢支持~~  发表于 2013-12-1 22:02
回复

使用道具 举报

签到天数: 22 天

[LV.4]偶尔看看III

发表于 2015-1-8 12:25:49 | 显示全部楼层
太长了,没耐心看完。。。。。。。。。。。。
回复

使用道具 举报

签到天数: 10 天

[LV.3]偶尔看看II

发表于 2015-1-16 21:30:12 | 显示全部楼层
好难懂的样子
回复

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2015-4-20 23:33:03 | 显示全部楼层
又扩宽鸟偶的知识
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

快速回复 返回顶部 返回列表