[@新手攻略]
{
#if
#act
mov S$图鉴参数 1
goto @装备图鉴
[@装备图鉴主页]
#if
#act
mov S$装备容器
mov S$按钮显示
mov n0 0
while n0 < 20
inc n0 1
inc S$装备容器 <$str(n0)>,
mov S$按钮图片<$str(n0)> 4
goto @循环按钮
inc S$按钮显示 <Button|id=<$str(n0)>|nimg=yuding/zhuangbeitujian/zhuangbei/<$s
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-05-02 21:17:51 |
👁️ 阅读: 9
根据课程日志记录,要实现点击容器按钮后界面不跳转,需要调整容器和按钮的交互逻辑。你的脚本中容器和按钮是分离的,点击按钮会触发`#say`重新渲染整个界面,导致容器状态重置。核心是让容器独立于按钮的点击事件。
以下是优化后的脚本,使用`<ListView>`的`children`属性来动态更新容器内容,按钮点击只改变一个变量,然后通过`GOTO`重新进入主函数,容器会根据这个变量重新加载对应的子项,而不会整体跳转。
```txt
[@新手攻略]
{
[@main]
#if
#act
; 初始化图鉴参数,如果没有则默认为1
mov S$图鉴参数 <$STR(S$图鉴参数)>
#IF
EQUAL S$图鉴参数
#ACT
mov S$图鉴参数 1
; 清空显示变量
mov S$按钮显示
mov S$容器子项
; 生成20个按钮和对应的容器子项ID
mov n0 0
while n0 < 20
inc n0 1
; 为每个按钮判断是否选中,设置不同图片
#IF
EQUAL <$STR(n0)> <$STR(S$图鉴参数)>
#ACT
mov S$按钮图片 5 ; 选中状态图片
#ELSEACT
mov S$按钮图片 4 ; 未选中状态图片
; 累加按钮显示字符串
INC S$按钮显示 <Button|x=<$FORMULATION[56+(<$STR(n0)>-1)*80]>|y=52|id=<$STR(n0)>|nimg=yuding/zhuangbeitujian/zhuangbei/<$STR(S$按钮图片)>.png|link=@选择图鉴#图鉴参数=<$STR(n0)>|esc=0>
; 累加容器子项ID,只有被选中的ID才加入容器
#IF
EQUAL <$STR(n0)> <$STR(S$图鉴参数)>
#ACT
INC S$容器子项 <$STR(n0)>,
endwhile
#SAY
<Img|bg=1|reset=1|esc=1|move=0|show=4|img=yuding/zhuangbeitujian/zhuangbei/8.png|loadDelay=0>
<Layout|x=660.0|y=-3.0|width=80|height=80|link=@exit>
<Button|x=685.0|y=20.0|nimg=public/1900000510.png|pimg=public/1900000511.png|link=@exit>
<Button|x=685.0|y=102.0|nimg=yuding/zhuangbeitujian/10.png|size=18|color=255|link=@新手攻略>
<Button|x=685.0|y=216.0|nimg=yuding/zhuangbeitujian/13.png|size=18|color=255|link=@神饰界面>
; 容器只显示当前选中的子项
<ListView|children={<$STR(S$容器子项)>}|x=56.0|y=52.0|width=158|height=414|loadDelay=0|reload=0>
<$STR(S$按钮显示)>
[@选择图鉴]
#if
#act
; 接收按钮传递的参数,更新图鉴参数
mov S$图鉴参数 <$PARAM(1)>
; 跳回主界面,容器会根据新的参数重新加载
goto @main
```
**主要优化点:**
1. **按钮与容器解耦**:按钮点击触发`@选择图鉴`,只更新`S$图鉴参数`变量,然后`GOTO @main`重新渲染。
2. **容器动态更新**:`<ListView>`的`children`属性根据`S$图鉴参数`动态生成,只包含当前选中的项,点击按钮后容器内容会变化,但不会发生整个界面的跳转或重置。
3. **按钮状态管理**:根据`S$图鉴参数`与按钮ID是否相等,动态切换按钮的显示图片(选中/未选中状态)。
4. **变量初始化**:增加了对`S$图鉴参数`的初始化判断,避免空值。
这样修改后,点击按钮只会改变选中状态和容器内的内容,界面保持稳定,符合“不跳转容器”的需求。
← 返回问答库