mov N1 0
while N1 < 7
goto @列表按钮循环
INC S$左侧按钮展示 <$str(S$列表按钮)>
endwhile
goto @地图传送主页
[@列表按钮循环]
#if
#act
inc N1 1
INC S$列表标签 btn<$STR(N1)>,
#if
#act
mov S$列表按钮 <Button|id=btn<$STR(N1)>|children={text<$STR(N1)>}|width=120|height=46|nimg
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-05-19 17:03:19 |
👁️ 阅读: 13
要实现点击不同按钮时,对应的按钮图片切换为选中状态(0.png),其他按钮为未选中状态(1.png),需要修改脚本逻辑。根据课程日志记录,TXT语法中WHILE循环内不能直接使用#IF,需要通过GOTO跳转进行条件判断。
以下是修改后的脚本示例:
[@main]
#if
#act
MOV N$当前选中 1 ; 默认选中第一个按钮
MOV N$循环索引 1
MOV S$列表标签 ""
MOV S$左侧按钮展示 ""
MOV S$列表按钮 ""
[@生成按钮]
#if
#act
while N$循环索引 < 8
GOTO @生成单个按钮
INC N$循环索引 1
endwhile
[@生成单个按钮]
#if
#act
MOV S$列表按钮 ""
; 判断当前按钮是否为选中状态
#IF
EQUAL N$循环索引 <$STR(N$当前选中)>
#ACT
MOV S$按钮图片 custom/npc/1.chuanson/0.png
#ELSEACT
MOV S$按钮图片 custom/npc/1.chuanson/1.png
; 生成按钮组件
INC S$列表按钮 <Button|id=btn<$STR(N$循环索引)>|children={text<$STR(N$循环索引)>}|width=120|height=46|nimg=<$STR(S$按钮图片)>|size=18|link=@选择地图#参数=<$STR(N$循环索引)>>
INC S$列表按钮 <Text|id=text<$STR(N$循环索引)>|x=25.5|y=11|color=255|size=18|text=地图<$STR(N$循环索引)>>
; 添加到列表标签
INC S$列表标签 btn<$STR(N$循环索引)>,
; 添加到展示内容
INC S$左侧按钮展示 <$STR(S$列表按钮)>
[@选择地图]
#if
#act
; 获取点击的按钮参数
MOV N$当前选中 <$PARAM(0)>
GOTO @main
[@地图传送主页]
#if
#act
#say
<Img|id=aaa|children={exit,listv}|a=4|percentx=50|percenty=50|width=727|height=472|img=custom/npc/1.chuanson/bj.png|bg=1|move=0|reset=1|show=4|layerid=0>
<Button|id=exit|x=694.0|y=30.0|width=26|height=42|nimg=public/1900000510.png|color=255|size=18|link=@exit>
<ListView|id=listv|children={<$STR(S$列表标签)>}|x=86|y=80|width=119|height=353|direction=1|margin=5|bounce=1|cantouch=1>
<$STR(S$左侧按钮展示)>
关键点说明:
1. 使用`N$当前选中`变量记录当前选中的按钮编号
2. 在生成每个按钮时,通过`#IF EQUAL N$循环索引 <$STR(N$当前选中)>`判断是否为选中状态
3. 点击按钮时,通过`@选择地图`函数更新选中状态,然后重新生成界面
4. WHILE循环中通过GOTO跳转到`@生成单个按钮`进行条件判断和组件生成
这样就能实现点击按钮1时btn1显示0.png,其他按钮显示1.png;点击按钮2时btn2显示0.png,其他按钮显示1.png的效果。
← 返回问答库