处理外部信息(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.”;
posted @ 2010-02-12 10:38  与时俱进  阅读(667)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈