Silverlight数学引擎(15)——数据存取
<div id="cnblogs_post_body">这几天年终绩效考核,琐事比较多所以更新得没有以前快了,绝对不是因为网上说的什么微软关闭Silverlight网站的影响啦,就算微软说现在马上抛弃SL,我也要把这个游戏写完,对于那些一边玩着Windows系统,一边大骂.net framework是微软的骷髅的人我一般也没有什么可说的。说到游戏,数据存取这个功能是必须的,不管是游戏设置还是状态什么的,都是可以存成数据文件,然后可以从文件加载。本节就来实现将我们画的图形存成Xml文件,然后可以从Xml文件中加载图形,也只有这样,我们的过关游戏才能实现。
要实现数据保存就要现有文件的内容格式,对于我们的坐标系上各个图形元素而言,就是要把他们按照依赖顺序写到Xml中,这样才能保存加载的时候才能不出意外,因此需要做的事情有以下几点:
1.一个坐标系中的每个图形都必须有唯一的ID或者Name
2.必须按照图形被添加到坐标系的顺序保存。
3.必须记录每个图形的上层依赖(比如线AB依赖于点A和点B)
4.图形的属性也需要保存(例如交点索引Index以及样式等)
综合以上,我们可以给出一个Xml文件格式:
<div class="cnblogs_code"><?xml version="1.0" encoding="utf-16"?><CS> <Shapes> <FreePoint Name="A" Style="00,11,1.00,1.00,False" P="1.00,2.00"/> <FreePoint Name="B" Style="00,11,1.00,1.00,False" P="-2.00,3.00"/> <FreePoint Name="C" Style="00,11,1.00,1.00,False" P="0.00,0.00"/> <LineShape Name="AB" Style="08,00,4.00,1.00,False" D="A,B"/> <LineShape Name="BC" Style="08,00,4.00,1.00,False" D="B,C"/> <LineShape Name="CA" Style="08,00,4.00,1.00,False" D="C,A"/> <CircleShape Name="OA" Style="00,02,0.50,1.00,True" D="A,A,B"/> <CircleShape Name="OB" Style="00,02,0.50,1.00,True" D="B,A,B"/> <IntersectionPointOfCircles Name="D" Style="00,08,0.50,1.00,True" D="OA,OB" I="1"/> <IntersectionPointOfCircles Name="E" Style="00,08,0.50,1.00,True" D="OA,OB" I="2"/> <LineShape Name="DE" Style="08,00,0.50,1.00,True" D="D,E"/> <CircleShape Name="OB1" Style="00,02,0.50,1.00,True" D="B,B,C"/> <CircleShape Name="OC" Style="00,02,0.50,1.00,True" D="C,B,C"/> <IntersectionPointOfCircles Name="F" Style="00,08,0.50,1.00,True" D="OB1,OC" I="1"/> <IntersectionPointOfCircles Name="G" Style="00,08,0.50,1.00,True" D="OB1,OC" I="2"/> <LineShape Name="FG" Style="08,00,0.50,1.00,True" D="F,G"/> <IntersectionPointOfLines Name="H" Style="00,08,1.00,1.00,False" D="DE,FG"/> <LineShape Name="HA" Style="08,00,0.50,1.00,True" D="H,A"/> <CircleShape Name="OH" Style="00,02,2.00,1.00,False" D="H,H,A"/> </Shapes></CS>
页:
[1]