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