• XML 中可嵌入 cmd命令脚本


    原文要参照代码 

    1. XML解析

    Task逻辑块可相互组合,形成复杂的树状结构,其结构用XML表示,即写成XML文件的形式。

    样例如下:

    <!-- 顺序执行块 -->

    <seq>

        <!-- 循环执行块 -->

        <loop count="5">

            <!-- 脚本执行块 -->

            <cmd>

                var i = 0;

                game.nextStage();

            </cmd>

        </loop>

    </seq>

    为了便于设定上下文中的数据,XML 还支持<var>标签,用于在当前节点的上下文中声明一个新的变量,供本节点及其子节点访问和修改。

    为了实现脚本的可重用性,防止单个脚本过于繁杂,XML中支持<script>标签来引用别的XML文件

    在本游戏中,游戏角色的移动任务很普遍,所以XML支持<move>标签来快速实现一个角色移动任务。

    游戏角色的逻辑特征往往包含多个方面,所以不是一个Task脚本可以定义的,因此多个上述XML脚本可以被置于<tasklist>标签中,从而形成一个完整的XML文本文件。

    样例如下:

    <!-- Task列表 -->

    <tasklist>

        <!-- 一个Task的逻辑结构 -->

        <task name="task1">

            <!-- 脚本执行块 -->

            <cmd>

                var i = 0;

            </cmd>

        </task>

        

        <!-- 另一个Task的逻辑结构 -->

        <task name="task2">

            <!-- 脚本执行块 -->

            <cmd>

                var i = 0;

            </cmd>

        </task>

    </tasklist>

    1. Task逻辑块

    a) Sequence:顺序执行块,其中包含的子逻辑块将顺序执行。

    b) Parallel:并行执行块,其中包含的子逻辑块将并行执行。

    c) IfElse:分支(选择)执行块,其中可包含一个或两个子逻辑块,并包含一个用于执行判断的表达式。

    d) Loop:循环执行块,其中包含一个可循环若干次执行的逻辑块。

    e) Wait:等待执行块,用于等待若干帧。

    f) Script:脚本执行块,其中包含一段脚本,使用表达式解析模块进行执行。

    g) Empty:空执行块。

    由于游戏逻辑结构的需要,Task执行时,每次只执行一帧的内容,当一帧被消耗掉后,将中止执行,立即返回。而当Task被再次执行时,会从上次中断的地方继续运行。

    在Java代码中,可以通过task.setBinding(name,value)来实现对每个Taskcontext数据的绑定。从而让叶子节点的脚本块能操作这些数据。

  • 相关阅读:
    绑定方法、非绑定方法与静态方法
    封装、隐藏和property装饰器
    自己动手写中文分词解析器完整教程,并对出现的问题进行探讨和解决(附完整c#代码和相关dll文件、txt文件下载)
    SASS -- 基本认识
    网易新闻页面信息抓取 -- htmlagilitypack搭配scrapysharp
    爬虫技术(四)-- 简单爬虫抓取示例(附c#代码)
    c# -- 读取文件夹中的所有文件(备忘)
    爬虫技术(五)-- 模拟简单浏览器(附c#代码)
    爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
    关于引用mshtml的问题
  • 原文地址:https://www.cnblogs.com/firecode/p/3599672.html
Copyright © 2020-2023  润新知