找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6681|回复: 4

[教程] 简单的imagebutton图片变换

[复制链接]
发表于 2020-8-13 00:31:22 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 blackpineapple 于 2020-8-13 00:32 编辑

时不时有人问如何实现这个变换的功能,论坛里已经有一个这个帖子讲了一种实现方法。
我来贴一个另外一种更简单的办法。
另外一个帖子的链接:
https://www.renpy.cn/forum.php?mod=viewthread&tid=523&extra=page%3D2

[RenPy] 纯文本查看 复制代码
transform animate_button:
    alpha 0.0
    on hover:
        linear 1.0 alpha 1.0
    on idle:
        linear 1.0 alpha 0.0

screen test():
    button:
        xysize (200, 200)
        padding (0,0)
        background "#ffffff" 
        action NullAction()
        add "#ffff44" at animate_button


只要把background后面换成你要的idle时候的图片,把add后面换成你要变换的图片就可以了。
比如"gui/button_idle.png" 这样。

这个写法的知识点是on hover和on idle,具体请参考:https://doc.renpy.cn/zh-CN/atl.html#on

评分

参与人数 1干货 +2 收起 理由
BuErShen + 2 感谢分享!

查看全部评分

发表于 2021-1-21 14:13:27 | 显示全部楼层
添加砖瓦……
结合了以上两位方案的优点,在on语句中使用function。

[RenPy] 纯文本查看 复制代码
## 淡入淡出transform
transform button_fadeinout:
    alpha 0.0
    on hover:
        #linear 0.5 alpha 1.0
        function fadein_function
    on idle:
        #linear 0.5 alpha 0.0
        function fadeout_function

init python:
    def fadein_function(trans, st, at):
        if(st >= 0.5) or (trans.alpha > 1.0):
            trans.alpha = 1.0
            return None
        else:
            trans.alpha = st * 2.0
            return 0

init python:
    def fadeout_function(trans, st, at):
        if(st >= 0.5) or (trans.alpha < 0.0):
            trans.alpha = 0.0
            return None
        else:
            trans.alpha -= st * 2.0
            return 0
回复 支持 2 抱歉 0

使用道具 举报

发表于 2020-8-15 10:11:57 | 显示全部楼层
是,后来我做另一个东西的时候意识到这个了,我原来那个写法显得非常智障了。不过那个写法也能用来做一些特别的效果。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2020-8-16 08:45:26 | 显示全部楼层
立笔犊 发表于 2020-8-15 10:11
是,后来我做另一个东西的时候意识到这个了,我原来那个写法显得非常智障了。不过那个写法也能用来做一些特 ...

比如什么样的特别的效果?
回复 支持 抱歉

使用道具 举报

发表于 2020-8-16 16:08:37 | 显示全部楼层
blackpineapple 发表于 2020-8-16 08:45
比如什么样的特别的效果?

因为那个的最重要的意义在于把transform的过程转移到了python函数中。
原本transform本身是不支持条件判断和指定ATL样式以外的操作的,甚至连设置变量都不行,但在python函数中这些东西都可以直接用python语法手动实现。
当然我当时那个写法过于繁琐和智障了。
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 01:08 , Processed in 0.121195 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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