找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 506|回复: 2

[已解决] 如何重新加载当前界面的所有内容

[复制链接]
发表于 2023-11-21 23:34:04 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 抚姬桑 于 2023-11-22 18:41 编辑

我想要实现以下功能:
界面中包含一组按钮(含有变换动画),按钮上展示若干的数据内容。当点击其中一个按钮时,该界面刷新。所有按钮以带有变换动画的形式重新出现,并且按钮上所有内容刷新。
我查阅了相关资料,renpy.restart_interaction()这个行为可能有用,但是我在行为中尝试加入它时没有实现功能,貌似只会重新执行action包含的行为不能刷新界面……
我实在不知道如何解决这个问题,请各位大佬帮忙,万分感谢!
以下是我的代码:
[RenPy] 纯文本查看 复制代码
screen ChooseScreen:
    #若干的按钮
    at at_dissolve()    #自定义的变换,和dissolve效果一样
    
    #通过循环显示若干个按钮
    for i in range(persistent.GlobalChoose):
        
        #随机生成按钮内容
        #这是一个列表类的函数,它用来对类中每个成员变量随机生成值(用以作各个按钮包含的数据)
        $persistent.Chooses[i].Random_Content(persistent.GlobalMainIngredientsRange,persistent.GlobalSecondIngredients,0,persistent.Ingredients,persistent.GlobalDay)
        
        #显示按钮
        imagebutton auto "images/ChooseBox_%s.png" xpos 953 ypos 156+(int(610/(persistent.GlobalChoose-1)))*i:
            
            #点击按钮后,进行相应数据的计算及数据更新(无关紧要)
            action [SetVariable("persistent.ChooseResult",persistent.Chooses[i].num),Function(Choose_Action),
                    renpy.restart_interaction       #重新加载当前(ChooseScreen)界面,通过函数重新随机生成按钮内容
                ]

            #无关紧要的功能(一个预览点击按钮后会发生其他可视变化的功能)
            unhovered [SetVariable("SelectPreview",-1)]
            hovered [SetVariable("SelectPreview",persistent.Chooses[i].num)]
        
        #显示每个按钮中的数据内容
        for k in range(len(persistent.Chooses[i].arraynum)):
            add "images/%s.png" % persistent.Ingredients[persistent.Chooses[i].arraynum[k]].name:
                xpos 1005+k*250 ypos 188+(int(610/(persistent.GlobalChoose-1)))*i
            text "%d" % persistent.Chooses[i].arrayingredientnum[k] size 50 font gui.interface_text_font:
                color "#ffffff" xpos 1085+k*250 ypos 188+(int(610/(persistent.GlobalChoose-1)))*i



发表于 2023-11-22 08:52:06 | 显示全部楼层
我有个不一定正确的猜测:renpy.restart_interaction 是有效的,只是随机数没变,看起来没效果……
建议先试试不用随机数,用其他数值变化方式看看效果。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-11-22 18:27:20 | 显示全部楼层
被诅咒的章鱼 发表于 2023-11-22 08:52
我有个不一定正确的猜测:renpy.restart_interaction 是有效的,只是随机数没变,看起来没效果……
建议先 ...

我对我的代码进行了多次的尝试和修改,也许renpy.restart_interaction确实起作用了。
但我发现我似乎不需要使用这个行为
一旦界面中的某一个数据发生改变时,它会自动刷新界面(目前来看好像只有数据刷新了,但所有可视组件不会以变换方式重新显示)
经过长时间尝试,我发现数据没有重新随机化的原因仅仅只是我忘记清空当前类成员列表里的数据,所以重新生成的数据没有(空间)加入到成员列表中
很抱歉我没有把所有涉及相关的代码放出来
这是随机生成数据的方法:
[RenPy] 纯文本查看 复制代码
def Random_Content(self,MainRange,SecondNum,ExtraAppear,ArrayClass,NowDay):
            random.seed(time.time())
            SampleArray=[]
            UnlockArray=[]
            for temp_j in range(9):
                if NowDay >= ArrayClass[temp_j].day:
                    UnlockArray.append(temp_j)
            SampleArray=random.sample(UnlockArray,2)
            for temp_j in range(4):
                if temp_j == 0:
                    self.arraynum.append(SampleArray[temp_j])

目前来看我算是解决了这个棘手的问题了233,不过还是感谢版主的回复!^_^
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-11-23 17:58 , Processed in 0.109583 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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