Scene构造过程:
一、sceneName:场景名:其配置文件是以场景名来进行命名的。其值为:删除掉“Scene”的类名。具体执行了GetType().Name.Replace("Scene", "");
二、根据xml对Scene进行初始化。xml文件一共必须有3个以及非必要css资源1个。分别是:
1. Scenes\resources.xml:其主要存放Scene基类对象级的资源,如鼠标对象与字体对象。存放在_resources中的_sharedBundle对象中
2. Scenes\’ 场景名’\ ’ 场景名’.resources.xml:主要是Scene对象中派生类中(派生类特有的资源)。存放在_resources中的_sceneBundle对象中
3. Scenes\’ 场景名’\ ’ 场景名’.layout.xml:主要是Scene(派生类特有的规划配置文件)。(SceneLayoutLoader在ProcessDocument过程中对xml文件进行处理,其处理模式是使用类似反射的技术来对Node类进行属性赋值。在ProcessNodeContent过程是处理Scene中的子节点对象。SceneLayoutLoader的ProcessNode过程为根据layout文件中的Scene下的子节点进行Node对象创建的过程,ProcessElementNodeProperties为处理该节点的属性赋值过程)
4. Scenes\’ 场景名’\ ’ 场景名’.css:主要是Scene中用到的输出文字所使用的样式配置文件。
5. Scenes\ Graphics\:里面存放了2中以及1中所定义的所有资源文件。
三、构造时先执行InitializeScene(场景名)进行二中的根据配置文件进行初始化。
四、只要文件没有问题,ResourceCollection对象在创建的时候,会创建出ResourceFileParser类对象去会执行ProcessSprites(document); ProcessSpriteCollections(document); ProcessFonts(document); ProcessShaders(document); ProcessParticleEffects(document); ProcessCursors(document);的方法进行各种对象的载入。ResourceCollection对象会把从xml中解释出来的对象存放到_disposableList中(在对象释放时把_disposableList中的所有对象释放掉),以及存放在_resourceMap中,供外界提取用。
由于有源码,因此,具体的研究分析得对代码的详细分析,这里提供其构建的过程,方便大家分析的时候对问题的定位。
下面是本人在开发过程中对场景的问题分析的记录:
无限场景:在调试过程中,发现对场景的大小进行赋值后,有很多不顺的事情发生,而我觉得,无论在游戏开发还是在程序开发过程中,场景不应该有大小,那才叫自由,因此,在此记录下,使用Scene时使用无限场景,不对其大小进行赋值。
原创作品出自努力偷懒,转载请说明文章出处:http://www.cnblogs.com/kfarvid/