Creating UI Using Vectorian Giotto and FlashDevelop

转至元数据结尾

转至元数据起始

总览

完成了这个主题后您将能够:

  • 使用 "Vectorian Giotto "为您的游戏创建用户界面 (UI)。
  • 使用 "FlashDevelop" 可以使 UI 与脚本语言交互。
  • 使用 "Flowgraph" 实现 UI。
  • 学习使用 UI 模拟器。

下载并安装以下工具:

Vectorian Giotto

http://vectorian.com/giotto/

Notepad++

http://notepad-plus-plus.org/

FlashDevelop

http://www.flashdevelop.org/

图形 UI 入门知识

安装工具之后开始运行 "Vectorian Giotto"。使用该程序创建 UI 的图形端。

Setting Up the Document

  1. 进入 文件 新影片

首先进行文档设置。

  1. 进入 修改 > 文档
  2. 输入 "1280" 修改宽度。
  3. 输入 "720" 修改高度。
  4. 输入 "30" 修改帧速率。
  5. 将标尺单位设置为像素。

"Vectorian Giotto" 不会提示您保存工作,因此在关闭之前要确保随时保存。

  1. 进入 文件 > 保存

由于 "Vectorian Giotto" 没有工作区或诸如此类的区域,因而您将需要保持其整洁。

  1. 新建一个“Giotto 工作区”文件夹。
  2. 在该文件夹中添加另外一个文件夹,命名为“教程项目”。
  3. 在该文件夹中将您的文件保存为“按钮教程”。

在屏幕的顶端您将发现时间轴。该时间轴将后景和组件智能分开在不同的图层中。

  1. 双击现有图层,图层 1。
  2. 使用诸如“后景”或 "BG" 之类的名称重命名该图层。
  3. 右击该图层,添加新的图层。
  4. 重命名该图层为“组件”。

创建图形用户界面

创建按钮

  1. 从右侧的调色板中选择一种颜色,再选择左侧的矩形工具.
  2. 确保顶部的组件层已选。
  3. 在画布中画一个将表示按钮的方框。

  1. 再次选择左侧的文本工具,从右侧选择一种颜色。
  2. 单击按钮并键入一些文本。
  3. 单击选择工具  并适当地移动文本。

现在我们将使用文本将图形转换为按钮。

  1. 右击您刚刚在画布中画的矩形方框,并选择“转换为符号”。
  2. 指定名称,例如:文本按钮。
  3. 确保要选择“按钮”,而不是影片剪辑,并单击“确定”。

现在图形已被按钮替换。双击该按钮可将其放大,将更改时间轴并且可以编辑按钮属性。

目前该按钮包括四种状态:悬上、接触、按下和点击。

状态

描述

离开

鼠标未在按钮上

悬空

鼠标在按钮上(未点击)

按下

按钮被按下(按下鼠标按钮)

击中

点击按钮(按下之后释放鼠标按钮)

  1. 右击第二个框架(“接触”) > 插入关键帧
  2. 按照同样的步骤为其他状态插入关键帧。

现在我们可以改变不同状态下的按钮外观。

  1. 进入“悬上”状态并移动颜色滑杆,您可以选择颜色只改变光度。按照同样的步骤为“按下”和“点击”状态改变光度。
  2. 单击“进入影片”以返回您的场景,否则接下来您的操作将是在按钮中完成而不是在场景中完成。
创建消息框

现在将添加一些文本到我们的场景中,稍后我们可以在该场景中实时编辑。

  1. 选择左侧的文本工具。
  2. 从右侧中选择一种颜色。确保未选择黑色。由于稍后我们将要使用的 UI 模拟器是黑色后景,因此,为易于测试,可以选择例如红色
  3. 绘制一个文本字段。

您的场景外观应该是这样。

导出 UI

现在,由于我们想要使用脚本中的按钮和文本字段,我们可以使用适当的名称为其命名。

  1. 单击按钮并命名。
  1. 按照同样的步骤为中间的文本框命名。

而且由于我们使用的是字体文件夹,我们需要将其嵌入到 SWF 文件中。请使用“选择工具”来完成此操作,并单击中间的“消息框”。

在属性的底部:

  1. 设置其类型为动态类型。
  2. 单击“选择”按钮,此操作将确保文本在运行时不被选取。
  3. 将按钮对齐方式设置为居中。
  4. 单击“嵌入...”。
  5. 选择所有的四行字体并单击“确认”。此操作将确保可以显示包括 SWF 文件在内的字体。

  1. 再次保存您的文件。
  2. 进入 文件 > 导出 Flash 影片
  3. 并将其导出至同一文件夹。系统将询问您是否压缩影片,不需选中复选框,仅需单击“确认”。

现在您的项目文件夹中应该包含以下文件:

  • TutorialButton.vgd
  • TutorialButton.swf

目前 SWF 文件中仅包含 UI 的图片部分,在下一部分中您将创建支持该图片的代码。

实现用户界面交互

设置“项目”

打开 FlashDevelop 并进入

  1. 项目 > 新建项目
  2. 在“脚本语言 2”下方选择空项目。.
  3. 给该项目命名,例如“教程项目”。
  4. 进入“浏览器”。
  5. 寻找您的项目文件夹。
  6. 单击“制作新文件夹”。
  7. 将其命名为“代码”。
  8. 单击“确认”。
  9. 再次单击“确认”以创建项目。

此操作将会把代码放置于 SWF 旁边的文件夹,美观且整齐。

现在在右侧您将看到您已创建的项目(教程项目 (AS2))。

  1. 右击该项目,并选择 添加 > 新类
  2. 将其命名(例如“测试按钮类”)。
  3. 并单击。

现在已有项目和类,并且我们将使用类经由 Scaleform 使 Flash 与 CryEngine 挂钩。

  1. 右击该类并选择 总是编译。此操作将确保在项目运行时编译该类。

下面继续项目属性。

  1. 右击您的项目,进入 属性

在此处您将看到 5 个标签,我们将仅编辑其中 2 个。

  1. 首先是“输出” 标签,此标签将暂存所有新导出文件的信息。
  2. 确保该平台使用的是 Flash 播放器和 8.0 版本。
  3. 编译目标可以保持在“应用程序”中。
  4. 单击浏览器并使用 SWF 文件查找文件夹的位置,但要确保以不同的名称命名。例如 "TutorialButtonInjected.swf"。该名称可以显现出 SWF 图形和注入编码后图形的明显区别。
  5. 设置维度和帧速率的数值与 "Vectorian Giotto" 项目中维度和帧速率的数值相同,分别设置为" 1280 x 720" 和 "30 fps"。

  1. 进入“注入”标签,此标签暂存用于注入操作脚本代码到 SWF 图形文件的设置。
  2. 标记“启用代码注入”复选框。
  3. 在输入 SWF 文件框中,查找我们刚刚使用 "Vectorian Giotto" (TutorialButton.swf) 创建的 UI 文件的位置。

添加操作脚本

现在,项目将准备注入操作脚本到 SWF 文件。

此文件需要如下所示的入口点:

Snippet from ButtonTestClass.as
static var ButtonTest:ButtonTestClass;
public static function main(mc:MovieClip):Void
{
    ButtonTest = new ButtonTestClass();
}

起初执行代码片段,该操作将“测试按钮类”实例化并保存于“测试按钮”中。

这意味着已调用构造函数,我们需要进行实例化的所有类皆可以在此处执行。

构造函数中以下代码将处理按下按钮:

Snippet from ButtonTestClass.as
public function ButtonTestClass()
{
    _root.ButtonClick.onPress = function()
    {
        fscommand("ButtonClickPressed");
    }
}

使用我们自己的按钮重写“按下”函数。注意 "_root.ButtonClick"。
这是对象路径,该路径总是以  "_根,开始,然后是按钮名称。

命令使 Flash 对象与其所有者实现沟通,在我们的实例中是实现 CryEngine 与其内部的 Scaleform 沟通。
该命令用于发送事件至可以捕获 Flowgraph 和 流程(稍后将对此流程进行说明)的 CryEngine。

最后,添加可以更改消息框中文本的函数。

Snippet from ButtonTestClass.as
public static function ChangeMessage(message:String)
{
    _root.MessageLabel.text = message;
}

这里再次注意"_root.MessageLabel"。

此处是操作脚本文件的完整代码:

ButtonTestClass.as
class ButtonTestClass
{
    static var ButtonTest:ButtonTestClass;
    public static function main(mc:MovieClip):Void
    {
        ButtonTest = new ButtonTestClass();
    }
    public function ButtonTestClass()
    {
        _root.ButtonClick.onPress = function()
        {
            fscommand("ButtonClickPressed");
        }
    }
    public static function ChangeMessage(message:String)
    {
        _root.MessageLabel.text = message;
    }
}

导出注入的影片至游戏

  1. 保存您的文件。
  2. 项目 > 建立项目

此操作将注入代码至给定的 SWF 文件,并将其另存至输出文件中。
若您想要运行您的项目,您可以进入

  1. 项目 > 测试项目

由于点击按钮将仅生成即将处理的事件,因而此时不需多项操作,但您可以查看您的 UI 以及运行时未出现错误的外观。

现在将使 UI 在游戏中运行

  1. 进入您的项目文件夹。
  2. 复制 "TutorialButtonInjected.swf" 文件。
  3. 粘贴至“<您的 CryEngine 文件夹> \游戏\库\UI"。
  4. 用 ".gfx" 扩展名重命名该文件。

现在为使 CryEngine 能够读取该文件,将需要一个保存在 XML 文件中的 UI 元素。

  1. 打开记事本++。
  2. 粘贴文件中的以下代码。
TutorialButton.xml
<!-- Category name, of your own choosing -->
<UIElements name="TutorialHUD">
  <!-- Object name, again, of your own choosing -->
  <UIElement name="TutorialButton" render_lockless="1">
     
   <!-- Point it to the correct files and give it some default settings -->
    <GFx file="TutorialButtonInjected.gfx" layer="0">
      <Constraints>
         <Align mode="dynamic" valign="center" halign="center" scale="0" max="0" />
      </Constraints>
    </GFx>
    <!-- Map the function to change the message in the box -->
    <functions>
        <function name="ChangeMessage" funcname="ButtonTestClass.ChangeMessage">
            <param name="message" desc="" type="String"/>
        </function>
    </functions>
    <!-- Here we will define the event that the buttonClick will generate -->
    <events>
      <event name="OnClick" fscommand="ButtonClickPressed" desc="" />
    </events>
     
  </UIElement>
   
</UIElements>
?

  1. 按照以下路径保存: "<your CryEngine directory>\Game\Libs\UI\UIElements\TutorialButton.xml"

设置 CryEngine 内部的 UI

测试 UI 模拟器中的 UI

在 UI 模拟器的帮助下,实际上可在将 UI 置于游戏中之前对其进行测试,若要完成此操作,请进入

视图 > 打开试图窗格 > UI 模拟器

注:您在此模拟器中的所有操作都具有临时性,仅供预览而不保存任何设置。

“元素”下方是不同的 UI 列表,您的 UI 应列入其中。

  1. 单击您的 UI。
  2. 打开下方的属性。
  3. 将“可见”属性设置为真。

现在您应该在模拟器窗口中查看您的 UI。

  1. 打开“标志”。
  2. 设置“鼠标事件”属性为为真。

现在 UI 将接受鼠标事件并且按钮将对预览中的鼠标做出反应。

您可以测试刚刚设定和添加的函数。

  1. 打开“函数”。
  2. 双击“修改消息”。
  3. 您可以修改“消息”参数并单击调用以查看其是否运行。

旁注:若您的 UI 中未设置后景且文本颜色设置为黑色,由于 UI 模拟器的背景也是黑色,您将无法读取该文本。
因此,为易于测试,明智的做法是添加背景或使用彩色元素。

使用 FlowGraph 以在游戏中显示您的 UI

使用 FlowGraph 显示 UI
最后一步是在您的关卡中实际运行 UI 并使按钮响应点击。
  1. 进入*文件* > 新建
  2. 命名该文件并单击“确认”。

We don't need to bother with adding anything to the level, the water will be fine for now.

  1. Open the flowgraph editor by clicking the FG button.
    or
  2. View > Open view pane > FlowGraph.

  1. 文件 > *新建 UI 操作*并命名。
  2. 可选项:您现在可以通过右击实现移动 UI 操作,若想更改文件夹,也可选择更改。

现在显示的是一个空白表格,即您的空 FlowGraph。添加节点以开始、结束程序并对 UI 进行配置。

  1. 右击并进入*添加节点*、UI操作*和*开始
  2. 右击并进入*添加节点*、UI操作*和*结束
  3. 右击并进入*添加节点*、UI显示*和*配置
  4. 右击并进入*添加节点*、UI显示*和*约束

在配置和约束中:

  1. 双击“元素”。
  2. 单击 "..."。
  3. 从列表中选择 UI 元素。

现在将把以下标记设置为真:

在配置中:

  • 光标
  • 鼠标事件

在约束中:

  • 缩放

如下所示,现在链接所有 FlowGraph 节点。

处理事件和函数的 FlowGraph

如前面提到的添加事件和函数至 FlowGraph 。
添加我们定义的事件:

  1. 右击,添加节点UI事件按钮教程  单击

添加我们所设定的函数:

  1. 右击,添加节点UI函数按钮教程  修改消息
  2. 现在仅链接单击“事件”到修改消息“调用”并通过双击来设定消息参数的数值。

  1. 单击主视窗口。
  2. 请按 Ctrl+G 键。

现在单击按钮时您的 UI 应该有所响应。由于您的视区设置,其结果可能不尽如人意,在模拟器中您可以低分辨率查看该结果并且可以得到精确的结果。

提示和诀窍

FlashDevelop
  • 使用“预构建”和“构建后”命令以加快开发流程。
  • 您可以直接设置输出路径到游戏/库/UI 文件夹,扩展名也是 ".gfx"。此操作可以节省开发流程中的另一步骤。
  • 若您有意愿,可以用不同的视觉 SWF 编辑器交换 Vectorian Giotto。

Creating UI Using Vectorian Giotto and FlashDevelop相关推荐

  1. 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt...

    首先,大家可以看下这个链接 Windows GUI自动化测试技术的比较和展望 . 这篇文章介绍了Windows中GUI自动化的三种技术:Windows API, MSAA - Microsoft Ac ...

  2. qt-designer使用教程3--编写自己的槽

    qt-designer使用教程 作者:zieckey(zieckey@yahoo.com.cn) All Rights Reserved! 第三章  编写自己的槽 上一章我们学习了 QT Design ...

  3. angular 模块构建_如何通过11个简单的步骤从头开始构建Angular 8应用

    angular 模块构建 Angular is one of the three most popular frameworks for front-end development, alongsid ...

  4. android生命周期_Android片段生命周期

    android生命周期 Today we will learn about Android Fragment Lifecycle and implement a single activity cla ...

  5. linux 动画软件,免费开源的 2D 动画软件

    春节期间,出于好玩,尝试来做一些自娱自乐的动画:因为预算和配置问题,所以绕开了 Adobe 系列,转而投奔一些免费开源的轻量软件.以下是我的一些发现,拿出来与大家一起分享. 简单轻便,专注逐帧动画,包 ...

  6. 游戏感虚拟感觉的游戏设计师_从零到游戏设计师:即使您没有任何经验,如何开始制作视频游戏...

    游戏感虚拟感觉的游戏设计师 by Angela He 通过何安佳 从零到游戏设计师:即使您没有任何经验,如何开始制作视频游戏 (From Zero to Game Designer: how to s ...

  7. Linux系统安装网络抓包工具wireshark

    既然要安装抓包工具wireshark,那么我们首先必须得了解下它是什么,干什么的? 我只是知识的搬用工:http://baike.baidu.com/link?url=1bxmqMKKN_IItxSc ...

  8. ux设计师薪水_UX初学者选择亲和力设计师而不是Adobe illustrator的3个节俭原因

    ux设计师薪水 This is the modern-day designer's dichotomous dilemma, encapsulating a perennial choice only ...

  9. swift 听筒模式_Swift中的“工厂方法”模式

    swift 听筒模式 定义 (Definition) 'Factory Method' pattern is a creational design pattern that abstracts th ...

最新文章

  1. python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)
  2. css数字发光,每日CSS_发光文本效果
  3. web.xml文件头出错
  4. 【转载】c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)
  5. debian6 snmpd 安装配置
  6. linux之chsh命令
  7. 时间序列分析及应用r语言pdf_R语言时间序列分析(十一):指数平滑法
  8. 最新 | 机械工程领域SCI期刊一览(2020JCR)
  9. 水准网测量平差matlab_基于MATLAB的测量平差计算
  10. myeclipse 百度云
  11. 做自媒体,宝妈萌娃类视频尤其要注意,越好的视频越有节奏感
  12. 大白菜U盘重装win7系统教程,PE重装win7系统教程
  13. 微信小程序的灰度发布
  14. 什么是IC封测?语音芯片封装与测试的流程步骤
  15. 网络基础——牛客网刷题第四波
  16. 每周推荐短视频:为什么理论正确但得不到预期结果?
  17. word设置多级混合标题
  18. [PAT A1046]Shortest Distance
  19. 龙珠头/小怪兽/纸片少女都是怎么弄的?
  20. OpenWRT AR9331 mjpg-streamer 网络安装和离线ipk安装

热门文章

  1. UE5 官方案例Lyra全特性详解 6.生成防御塔
  2. 计算机教案在幻灯片中插入影片,小学六年级上册《在作品中插入“电影”片段》信息技术教案...
  3. (学习笔记)手把手教你学51单片机:C语言基础以及流水灯的实现
  4. 施密特(smit)触发器
  5. 传感器故障下的滑模观测器的设计方法——Utkin观测器和Walcott-Zak 观测器
  6. 新东方老罗(罗永浩)语录全集
  7. OpenAI Codex,GitHub Copilot 和cheat.sh 三个代码建议工具对比
  8. redis 启动命令 (windos)
  9. 搭建BI平台之前的准备工作
  10. 在html插入数学公式,如何在Word中插入数学公式