1.自己总结的游戏框架,小到中型游戏适用——基本的panelbase(面板)

来源:互联网 发布:tensorflow centos7 编辑:程序博客网 时间:2024/04/27 19:26

1.游戏里面的每个系统,如聊天,邮箱(我做的是手游,所以这些也是单独的一个面板)都是一个独立的panelbase,在这里面做的事情如下:

调用AseetManager加载资源

加载完成后有回调(在外i之前的一篇文章中就简单的描述,或者自己百度吧)

然后调用一个被子类覆盖的方法(子类自行添加需要展示的资源)

处理加载的资源(由于用的是as,对效率要求较高,大多界面的资源在不要的时候会处理掉)


好了,上代码

package core{import flash.display.Sprite;import manager.AssetsManager;/** *  * @author joj */public class PanelBase extends Sprite{private var loadQueue:Array;public function PanelBase(){prepareShowPanel();}/** * 由子类覆盖 */protected function prepareShowPanel():void{}/** * 加载当前界面的资源 * @param queue */protected function preLoadAssets(queue:Array):void{loadQueue = queue;for (var i:int = 0; i < queue.length; i++) {AssetsManager.instance.addLoadQuue(queue[i],onLoadComplete);}}/** *  */private function onLoadComplete():void{onShow();}/** * 在当前资源加载完成后执行,把需要展示的东西弄出来。。由子类覆盖 */protected function onShow():void{}/**关闭面板后需要做的处理,移除事件,timer等等 * 也由子类继承 */public function dispose():void{AssetsManager.instance.disposeAssets(loadQueue);}}}

然后在来一个继承了上面这个类的


package game{import flash.display.DisplayObject;import flash.events.MouseEvent;import flash.geom.Point;import flash.text.TextField;import flash.text.TextFormat;import AStar.GV;import component.GameButton;import core.GameControl;import core.PanelBase;import core.PanelEnum;import game.fightField.FightMap;import game.player.Role;import manager.AssetsManager;import manager.RoleManager;public class GameMainPanel extends PanelBase{private var m_assets:Array;private var road:FightMap;private var m_myRole:Role;public function GameMainPanel(){}protected override function prepareShowPanel():void{m_assets = [];m_assets[0] = "assets/gameMain.swf";super.preLoadAssets(m_assets);}protected override function onShow():void{createDisplay();} private function createDisplay():void{var bg:DisplayObject = AssetsManager.instance.getDisObject(m_assets[0], "bg");addChild(bg);var outBtn:GameButton = new GameButton(AssetsManager.instance.getCommonAsset("close"));outBtn.x = 300;outBtn.y = 50;addChild(outBtn);}public override function dispose():void{super.dispose();}}}

文笔不好,见谅。有问题可回复,要批判我接着。。哈哈~

AssetManger 加载资源的这个类我会另外再写。。


0 0
原创粉丝点击