zoukankan      html  css  js  c++  java
  • 处理外部信息(xml,html,js,shareObject)

    Accessing External Data
    有时候访问游戏的外部信息是非常必要的, 你可以载入来自网页或者文本域的外部参数,也可以保存或者下载本地信息,
    External Variables
    假设你有一个游戏是根据一些选项而变化的
    你可以从flash影片所在的html页面获取一些参数, 有几种不同的方法能实现这个,但是如果你使用通过publish setting设置而发布生成的html模版的话,你能通过设定AC_FL_RunContent 函数中的参数flashvars 开实现传递。

    看这个比较短的函数, 这里包含我添加的参数flashvars

    <script language=”javascript”>
    AC_FL_RunContent(
    ‘codebase’,
    http://download.macromedia.com/p ... flash.cab#version=9,0,0,0’,
    ‘width’, ‘550’,
    ‘height’, ‘400’,
    ‘src’, ‘ExternalVariables’,
    ‘quality’, ‘high’,
    ‘flashvars’, ‘puzzleFile=myfilename.jpg&difficultyLevel=7’
    );
    </script>

    Flashvars是一对属性名等于值的格式, 他们之间用&分开,上面的参数我们设置了puzzleFile等于myfilename.jpg, diffcultyLevel等于7

    Flash播放的时候,flash能通过LoaderInfo对象获取这些参数, 下面的这行代码是获得了参数并且把参数装载到一个对象里面

    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;

    如想访问单个的参数值,你可以使用这样的代码实现

    var diffLevel:String = paramObj[“difficultyLevel”];

    你可以使用这个方法传递任何数字,例如图片的名字,开始的关卡,速度,位置等等

    Loading Data
    调用外部文本文件是容易的,我们可以调用xml格式的文件,那将是非常方便的
    例如我们的xml是这样的

    <LoadingData>
    <question>
    <text>This is a test</text>
    <answers>
    <answer type=”correct”>Correct answer</answer>
    <answer type=”wrong”>Incorrect answer</answer>
    </answers>
    </question>
    </LoadingData>

    如果你想调用xml里面的数据,我们需要URLRequest 和 URLLoader 两个对象的帮忙,然后你可以监听载入xml文件是否完成,如果完成可以触发一个函数的实现!

    var xmlURL:URLRequest = new URLRequest(“LoadingData.xml”);
    var xmlLoader:URLLoader = new URLLoader(xmlURL);
    xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

    我们可以写这个函数去读取xml里面的信息并trace出来
    function xmlLoaded(event:Event) {
    var dataXML = XML(event.target.data);
    trace(dataXML.question.text);
    trace(dataXML.question.answers.answer[0]);
    trace(dataXML.question.answers.answer[0].@type);
    }

    我们需要把xml文件内容转换成XML对象,然后便可以轻松访问了

    读黑羽舵主的殿堂之路看到xml可以直接写在flash里面,所以我们可以直接创建XML对象,只不过不是外部调用而已

    Var dataXML: XML =

    <LoadingData>
    <question>
    <text>This is a test</text>
    <answers>
    <answer type=”correct”>Correct answer</answer>
    <answer type=”wrong”>Incorrect answer</answer>
    </answers>
    </question>
    </LoadingData>

    trace(dataXML.question.text);
    trace(dataXML.question.answers.answer[0]);
    trace(dataXML.question.answers.answer[0].@type);



    Saving Local Data

    游戏中我们通常要存储数据到本地,例如你可以存储游戏先前的分数,或者一些游戏选项,去存储数据到本地,我们需要 SharedObject 对象。
    看下面代码, 访问SharedObject对象同时会在本地相应的目录生成 命名为 mygamedata的sol文件,这个文件就是用来存储本地数据的,设定myLocalData.data为gameinfo,会在 mygamedata文件里面生成gameinfo = “Store this”, 当我们第一次运行下面的代码的时候,是访问不到本地数据的,因为第一次下面代码完成了本地创建和存储的工作,但第2次运行的时候就会读出Store this了,也就是读取的是先前的数据。
    var myLocalData:SharedObject = SharedObject.getLocal(“mygamedata”);
    trace(“Found Data: “+myLocalData.data.gameinfo);
    myLocalData.data.gameinfo = “Store this.”;
  • 相关阅读:
    VC6.0 error LNK2001: unresolved external symbol _main解决办法
    C++中数字与字符串之间的转换(使用CString.Format或者sprintf)
    C++内存管理(超长)
    Flash, Flex, Air, Flashplayer之间的相互关系是什么?
    《KVM虚拟化技术实战和原理解析》读书笔记(十几篇)
    HNCU1323:算法2-1:集合union (线性表)
    Delphi XE7下如何创建一个Android模拟器调试
    DelphiXE Android的所有权限按照分类总结说明
    DelphiXE8怎么使用调试模式(朱建强)
    C++静态库中使用_declspec(dllexport) 不能导出函数的问题
  • 原文地址:https://www.cnblogs.com/top5/p/1667782.html
Copyright © 2011-2022 走看看