界面系统

在无双引擎中,界面被定义为一个Python类(class),这个class中有两个函数,分别是 初始化() 和 处理消息().
其中 初始化() 用来定义界面元素, 处理消息() 用于处理用户输入消息(如按下某个按钮). 处理消息() 这个函数
不是必须的,当不提供该函数时, 加载界面() 会直接将用户输入返回给无双引擎处理. 但如果定义了 处理消息() ,
则 处理消息() 必须返回一个非空值给引擎, 否则引擎会在当前界面无限循环. 下面通过 <双生> 的开始菜单详细
讲解界面的用法.

 
# 定义游戏一开始时的界面. class是Python关键字,用来定义一个类 
class 开始界面: 

  # 定义开始界面中的元素布局, def 是Python关键字,用来定义一个函数 
  def 初始化(self): 
    图片(0, 0, "标题图.jpg") #显示一张图片 
    图片(574, 176, "标题LOGO.png", 锚点="中中") # 显示另一张图片 
   
    按钮(616,320, 图片="START-1.png", 激活="START-点选.png", 悬浮音效="悬浮音效.mp3", 点击音效="点击音效.mp3", 返回值="开始游戏") #按钮的返回值将在 处理消息(消息) 中处理 
    按钮(616,380, 图片="LOAD-1.png", 激活="LOAD-点选.png", 返回值="读取进度") 
    按钮(616,440, 图片="SPECIAL-1.png", 激活="SPECIAL-点选.png", 返回值="特殊") 
    按钮(616,500, 图片="EXIT-1.png", 激活="EXIT-点选.png", 返回值="退出") 
   
  # "消息" 即为所点击按钮的返回值 
  def 处理消息(self, 消息): 
    if 消息 == "开始游戏": 
      跳到标签("游戏开始")   # 通过 跳到标签() 这个API直接退出当前界面并跳到标签处 
    if 消息 == "读取进度": 
      加载界面(读档界面)     # 点下LOAD按钮时, 加载 读档界面 
    elif 消息 == "特殊": 
      加载界面(特殊界面)     # 点下SPECIAL按钮时, 加载 特殊界面 
    elif 消息 == "退出": 
      加载界面(退出游戏界面) # 点下EXIT按钮时,加载 退出游戏界面 
       
# 定义读取存档界面,该界面不处理消息,只是在点击"返回"按钮后返回上级菜单(即调用它的菜单), 它的按钮甚至不需要返回值 
# 注意:如果这个界面中没有按钮,那么加载这个界面就会进入无限循环状态 
class 读档界面: 
  def 初始化(self): 
    文本(400, 150, "读档界面建设中...\n存档请使用CTRL+1至9\n读档请使用1至9数字键", 颜色=(255,255,255), 锚点="中中") 
    按钮(400, 300, 文本="返回", 锚点 = "中中", 宽 = 100) 
           
# 定义一个特殊界面,本质和读取存档界面干的事情完全一致 
class 特殊界面: 
  def 初始化(self): 
    文本(400, 150, "暂时还没有什么Special的...", 颜色=(0,255,0), 锚点="中中") 
    按钮(400, 300, 文本="返回...", 锚点 = "中中", 宽 = 100)         

# 定义退出游戏界面, 这个界面中需要处理消息.点下 "是" 按钮后通过API 退出游戏() 直接退出游戏 
# 点击 "否" 按钮后需要返回上级菜单, 所以返回一个非空值 ("否"就是一个非空值).对这个情况而言返回任何非空值都可以     
class 退出游戏界面: 
  def 初始化(self): 
    文本(400, 150, "确定要退出吗?", 颜色=(255,0,0), 锚点="中中") 
    按钮(390, 200, 文本="是", 锚点="右中", 宽=100, 返回值="是") 
    按钮(410, 200, 文本="否", 锚点="左中", 宽=100, 返回值="否") 
     
  def 处理消息(self, 消息): 
    if 消息 == "是": 
      退出游戏() 
    elif 消息 == "否": 
      return "否" 
       
# 定义游戏中的分支选择界面, 可以看出, 利用图片按钮可以达到多变地分支菜单效果 
class 分支选择界面: 
  def 初始化(self): 
    按钮(274, 600, 锚点="中下", 图片="选项-蓝-未点选.png", 激活="选项-蓝-点选后.png", 返回值="现实") 
    按钮(544, 0, 锚点="中上", 图片="选项-红-未点选.png", 激活="选项-红-点选后.png", 返回值="思念") 

无双引擎目前提供3中界面元素,即按钮,图片和文本.其中以按钮最为重要,图片只是起到装饰作用(美术:这个也很重要!!),
而文本不是经常使用.下面详细介绍各个界面元素.

界面元素详解

按钮

<无双简介>中提到,按钮一共有4种表现形式.但其实我们可以将其归为两类,即可见按钮和不可见按钮.可见按钮中最常用且
效果最好的是图片按钮,而不可见按钮主要用于”调查”这种游戏模式当中.

图片按钮

按钮(400, 300, 锚点="中中", 图片="START-1.png", 激活="START-点选.png", 返回值="开始游戏") 
创建一个按钮所必须的参数即为按钮的xy坐标值(最开始的两个参数),它们配合 锚点 可以确定按钮的位置,具体请参考锚点定位系统.
参数:
锚点(anchor):默认值为 '左上' ('NW')
图片(image):按钮要显示的图片,无默认值
激活(active):按钮激活后(鼠标悬浮时)要显示的图片,无默认值
返回值(value):点击按钮后返回的值.默认为空.

图文按钮

按钮(400, 400, 锚点='中中', 文本="按钮文本", 图片="按钮1.png", 字体=("华文琥珀",20), 字体色=(0,0,0), 返回值="图文按钮") 
参数:
文本(text):按钮上要显示的文本,无默认值
字体(font):文本使用的字体,默认值在 设置.txt 中
字体色(fontColor):按钮文本的字体色.默认值为通用文本的默认颜色.
图片(image):按钮的背景图片,无默认值

文本按钮

按钮(750, 100, 文本="纯文本按钮", 锚点 = "右中", 宽 = 150, 高 = 30, 返回值 = "文本按钮", 字体=("华文琥珀",20)) 
参数:
文本(text):按钮上要显示的文本,无默认值
字体(font):文本使用的字体,默认值在 设置.txt 中
宽(width):按钮宽度.默认为文本的宽度
高(height):按钮高度.默认为文本的高度

隐藏按钮

按钮(80, 380, 锚点 = "中下", 宽 = 17, 高 = 45,  返回值 = "小门") 
参数:
宽(width):按钮宽度,无默认值
高(height):按钮高度,无默认值


因为按钮都是通过一个API(即 按钮 )创建出来的,当少填参数时,一种按钮会自动变成另一种按钮,如图文按钮没有填背景图片
时就相当于文本按钮,文本按钮忘填文本时就相当于隐藏按钮.

按钮音效相关参数

悬浮音效(hoverSound) : 鼠标滑过按钮时播放的音效文件路径
点击音效(clickSound) : 鼠标点击按钮时播放的音效文件路径

图片

图片(574, 176, "标题LOGO.png", 锚点="中中") 
图片的定义非常简单,锚点定位系统加上要显示的图片名称即可

文本

文本(400, 150, "要显示的文本", 颜色=(255,255,255), 锚点="中中", 字体=("华文琥珀", 20) ) 
文本的定义也非常简单,锚点定位系统加上要显示的文本和文本颜色以及字体即可

界面相关的API

加载界面(界面类, timeout = -1, *args, **kwargs)

英文版:

LoadUI(uiclass, , timeout = -1, *args, **kwargs)


参数

 
uiclass:定义好的界面,至少应包括 初始化(self) 这个函数 
timeout:界面自动退出的时间,可以用在打地鼠之类的场合.-1表示不会自动退出. 
*args,**kwargs:传递给 初始化(self, *args, **kwargs) ,新手可直接无视此行... 


返回值

点击的按钮的返回值,或者经过 处理消息(消息) 后的返回值

说明

调用该函数会暂停无双脚本的执行,直到用户点击一个按钮.

清空当前界面()

英文版: ClearCurrentUI()
说明:主要在 处理消息() 中调用,用以重绘当前界面.在制作类似”翻页”的功能时特别有用.具体请参考CG&音乐 鉴赏界面

跳到标签('标签')

英文版: JumpToLabel('label')
参数:要跳转到的标签名
返回值:无
说明:主要在界面处理中调用,用于退出当前界面及父界面(想像逆转裁判中的 “R键菜单→移动→移动目的地”)并直接跳转到标签处.
一般不在无双脚本中直接使用,因为无双脚本中有很方便的 跳到 指令.

界面相关的英汉对照

初始化:Init
处理消息:OnMessage
图片:CreateImage
按钮:CreateButton
文本:CreateText

返回 无双使用指南


doc/uisystem.txt · 最后更改: 2010/10/11 04:48 由 lance
到顶部