找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 75|回复: 8

[已解决] python定义类和方法

[复制链接]
发表于 前天 23:26 来自手机 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 aiRadioS 于 2025-4-2 23:14 编辑

一个文件中写了许多以下代码:
image s:
    “images/s.png”
    zoom 0.5
    xanchor 0.5
    yanchor 0.98
有办法用python定义一个类和方法来简化代码吗
我只会写这么多
init python:
    class im:
        def __init__(self,name,ul,zoom,xanchor,yanchor):
            self.name=name
            self.ul=ul
            self.zoom=zoom
            self.xanchor=xanchor
            self.yanchor=yanchor
        def i(self):
 楼主| 发表于 昨天 14:06 | 显示全部楼层
好像可以定义了 这样写
[RenPy] 纯文本查看 复制代码
init python:
    class im:
        def __init__(self,name,path,zoom=0.5,xanchor=0.5,yanchor=0.5):
            self.name=name
            self.path=path
            self.zoom=zoom
            self.xanchor=xanchor
            self.yanchor=yanchor
            self.transform=Transform(zoom=self.zoom,
            xanchor=self.xanchor,
            yanchor=self.yanchor)
        def i(self):
            renpy.image(self.name,At(self.path,self.transform))           
    ab=im("op","images/q/c12.png",0.5,0.5,0.98)
    ab.i()


然后在label里直接show op (我的代码里的图片名字是op)就可以用了
回复 支持 抱歉

使用道具 举报

发表于 昨天 15:03 | 显示全部楼层
其实完全没有必要写成一个类,写成一个单独的函数就好,因为renpy.iamge函数如果在游戏运行后被触发的话,会触发报错,因此这个类中的函数只能运行一次,写成一个类有点多余了)
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 昨天 15:47 | 显示全部楼层
本帖最后由 aiRadioS 于 2025-4-2 16:02 编辑
烈林凤 发表于 2025-4-2 15:03
其实完全没有必要写成一个类,写成一个单独的函数就好,因为renpy.iamge函数如果在游戏运行后被触发的话, ...

[RenPy] 纯文本查看 复制代码
init python:
    def ima(name,path,zoom,xanchor,yanchor):
        transform=Transform(zoom=zoom,
            xanchor=xanchor,
            yanchor=yanchor)
        renpy.image(name,At(path,transform))
    ima("aaa","images/logo/ai.jpg",0.5,0.5,0.98)

这样写可以吗
回复 支持 抱歉

使用道具 举报

发表于 昨天 21:01 | 显示全部楼层
我没理解楼主想简化的代码到底是哪部分。
如果按照楼主目前的做法,相当于把关键字参数改成了固定位置参数,不能说没用,约等于脱裤子放……


回复 支持 抱歉

使用道具 举报

 楼主| 发表于 昨天 22:15 来自手机 | 显示全部楼层
被诅咒的章鱼 发表于 2025-4-2 21:01
我没理解楼主想简化的代码到底是哪部分。
如果按照楼主目前的做法,相当于把关键字参数改成了固定位置参数 ...

好像是为了减少重复性书写  image 名字: 这个语句 ,可能只是减少代码行数 美观点
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 昨天 22:29 | 显示全部楼层
本帖最后由 aiRadioS 于 2025-4-2 22:51 编辑
被诅咒的章鱼 发表于 2025-4-2 21:01
我没理解楼主想简化的代码到底是哪部分。
如果按照楼主目前的做法,相当于把关键字参数改成了固定位置参数 ...

[RenPy] 纯文本查看 复制代码
def ima(name,path,zoom=0.5,xanchor=0.5,yanchor=0.5):
        transform=Transform(zoom=zoom,
            xanchor=xanchor,
            yanchor=yanchor)
        renpy.image(name,At(path,transform))
ima("aaa","images/logo/ai.jpg",0.5,0.5,0.98)
ima("abc","images/m/b1.png")
ima("aab","images/m/b3.png")

这样缩放aaa,abc,aab等等图片可以少几行代码 对于大部分图片 如果默认的0.5,0.5,0.5这几个参数适用的话  也可以少写几个参数
回复 支持 抱歉

使用道具 举报

发表于 5 小时前 | 显示全部楼层
https://doc.renpy.cn/zh-CN/transforms.html#At

按照楼主的需求:
[RenPy] 纯文本查看 复制代码
transform scale_anchor_transform:
    zoom 0.5
    anchor (0.5, 0.98)

image aaa = At("images/logo/ai.jpg", scale_anchor_transform)
image abc = At("images/m/b1.png", scale_anchor_transform)
image aac = At("images/m/b3.png", scale_anchor_transform)
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 5 小时前 来自手机 | 显示全部楼层
本帖最后由 aiRadioS 于 2025-4-3 09:42 编辑
被诅咒的章鱼 发表于 2025-4-3 09:14
https://doc.renpy.cn/zh-CN/transforms.html#At

按照楼主的需求:


我想了一下,这样写优点是清晰点(如果大部分图片参数适用的话和写成函数一样),缺点是anchor(0.5,0),(0.5,0.5),(0.5,1)需求不同时或者zoom缩放不同时,还是要重复性书写transform语句
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-3 15:09 , Processed in 0.052667 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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