开发日志-5.5

      天气炎热,心浮气躁,开发进展缓慢。

      ...........  * *  *...................... *  *  *....................................

      滚屏:

      首先来整理一下,看看物体是怎么添加到场景里面的。

      1) UserControl ----> MainCanvas : 这是显示的根。向游戏Game实体发送CLSINIT消息,同时传入参数初始化游戏实体,

        EntitiesManager.EntSendMessage(gameEnt, EM.EM_CLSINIT, new GameTemplate(this, LayoutRoot, 1000, 600), null);   在这个过程中,显示的根被传给了Game这个类的静态字段,同时还有长宽等,注意,这个类并不是实体,而是实体的逻辑,是用来处理各种消息的。不过在这里,保存一些数据也算是额外的工作吧,当然,或许有更好的结构,不过目前是这样做的。

     2)有了游戏实体还是不够的,我们在游戏实体的基础上添加了场景实体,众多的场景实体存储在一个List<Entity>里面Game.scenes。在创建场景实体的时候,把根RootCanvas,也就是Game.MainCanvas,和一个整数传给了Scene类的Init(...)方法来初始化。在场景实体里存储着SceneTemplate这样的一个数据模板,Root 相当于 Game.MainCanvas,在Root这个Canvas里添加了一个Contain Canvas,同时根据传入的整数,创建了一个Canvas数组,并把每一个数组里的每一个Canvas添加到Contain里面。

       UserControl--->MainCanvas(LayourRoot)(Game.MainCanvas)(Scene.Root)--->Scene.Contain--->Layer[Canvas]

      这样构成了游戏的显示基础,而且可以通过((SceneTemplate)_ent.parent.data).Layers[1].Children.Add(_ent.renderFrame)这样的方式找到所要添加的Canvas,比如这句把游戏人物添加到了Contain层里的数组里的索引为1的Canvas上面。

    

posted @ 2010-05-05 19:28  向恺然  阅读(115)  评论(0编辑  收藏  举报

我必须说的是:我崇尚开源,但鄙视剽窃。本博客所有引用的图片,文章,和代码,均只作为研究学习使用,不作为商业应用。如果我无意中冒犯了您,请发消息留言,我将立即删除。