找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9609|回复: 3

[教程] 9行代码实现历史记录滚动条下翻到底关闭

[复制链接]
发表于 2021-6-18 21:10:45 | 显示全部楼层 |阅读模式

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

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

×
实现滚轮向上打开历史记录后,一直写不好向下滚动到底关闭,发现是把判断后执行语句return Return()写成了Return()。
首先你需要重构Adjustment类或者更简单的,继承 Class Adjustment写一个新类MyAdjustment,在这个新类中重构一个change,判断滚动条值大于范围就关闭该screen
[RenPy] 纯文本查看 复制代码
init python:



    class MyAdjustment(renpy.display.behavior.Adjustment):



        def change(self, value):



            if value > self._range and self._value == self._range:

                # *Return to the game screen*

                return Return()

            else:

                # Otherwise, just do what the Adjustment normally does

                return renpy.display.behavior.Adjustment.change(self, value)

在screen game_menu中
[RenPy] 纯文本查看 复制代码
default adj = MyAdjustment(range = 100,changed =None,adjustable=True)

在其viewport中
[RenPy] 纯文本查看 复制代码
yadjustment adj

即可


发表于 2021-6-20 11:57:06 | 显示全部楼层
牛啊牛啊
回复

使用道具 举报

发表于 2024-3-2 11:27:43 | 显示全部楼层

如果是8.1.3版的renpy,使用上述代码后会导致在历史记录里用鼠标拖动文本达到最顶端或最低端报错的bug
需要将类里的change()加一个参数,代码如下:
[RenPy] 纯文本查看 复制代码
    class MyAdjustment(renpy.display.behavior.Adjustment):
 
        def change(self, value, end_animation=True):

            if value > self._range and self._value == self._range:
 
                # *Return to the game screen*
 
                return Return()
 
            else:
 
                # Otherwise, just do what the Adjustment normally does
 
                return renpy.display.behavior.Adjustment.change(self, value, end_animation)
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2024-3-4 22:31:28 | 显示全部楼层
黑白喵 发表于 2024-3-2 11:27
如果是8.1.3版的renpy,使用上述代码后会导致在历史记录里用鼠标拖动文本达到最顶端或最低端报错的bug
需 ...

这个我新开工程加进去一直不能滚动到底关闭,先有工程加的有的都没有问题,不知道为什么
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 18:19 , Processed in 0.055911 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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