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

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 加载资源的这个类我会另外再写。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫叔大鸭梨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值