Commit 5fdbab8d authored by wildfirecode's avatar wildfirecode

1

parent 2168ed3f
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
<script src="libs/security.js"></script> <script src="libs/security.js"></script>
<script src="libs/downloadApp.js"></script> <script src="libs/downloadApp.js"></script>
<script> <script>
window['development']=true;
var gameId = 1; var gameId = 1;
var CFG = { var CFG = {
appInfo: { appInfo: {
......
...@@ -84,12 +84,6 @@ export default class MainBase extends eui.UILayer { ...@@ -84,12 +84,6 @@ export default class MainBase extends eui.UILayer {
DataManager.ins.gameCfgData = window['CFG']; DataManager.ins.gameCfgData = window['CFG'];
DataManager.ins.gameCfgData.gameInfo.gameId = window["gameId"]; DataManager.ins.gameCfgData.gameInfo.gameId = window["gameId"];
setTimeout(() => {
console.log('stageHeight', this.stage.stageHeight);
console.log('height', this.stage.height);
}, 2000);
layers.init(this); layers.init(this);
Loading.init(layers.topLayer); Loading.init(layers.topLayer);
PanelCtrl.instance.init(layers.popupLayer); PanelCtrl.instance.init(layers.popupLayer);
...@@ -99,6 +93,8 @@ export default class MainBase extends eui.UILayer { ...@@ -99,6 +93,8 @@ export default class MainBase extends eui.UILayer {
this.registerModules(); this.registerModules();
this.loadFirstScreen();
this.loadAtlas();
this.getData(); this.getData();
RES.setMaxLoadingThread(10); RES.setMaxLoadingThread(10);
this.runGame().catch(e => { this.runGame().catch(e => {
...@@ -106,6 +102,45 @@ export default class MainBase extends eui.UILayer { ...@@ -106,6 +102,45 @@ export default class MainBase extends eui.UILayer {
}) })
} }
loadAtlas() {
if (!window['development']) {
const urlJSON = getResPath() + "resource/TextureMerger/loading.json";
const request = new egret.HttpRequest();
request.open(urlJSON, egret.HttpMethod.GET);
request.send();
const url = getResPath() + "resource/TextureMerger/loading.png";
const imageLoader = new egret.ImageLoader();
imageLoader.load(url);
}
}
_firstBgLoaded = false;
loadFirstScreen() {
this.loadFirstBG((bitmap: egret.Bitmap) => {
const t = Date.now() - window['__startTime__'];
console.log(`首屏显示时间:${t}ms`);
layers.addFirstBackground(bitmap);
this._firstBgLoaded = true;
this.check();
});
}
loadFirstBG(callback) {
const onImageLoaded = (e: egret.Event) => {
const imageLoader: egret.ImageLoader = e.currentTarget;
const bitmapData: egret.BitmapData = imageLoader.data;
const texture = new egret.Texture();
texture._setBitmapData(bitmapData);
const bitmap = new egret.Bitmap(texture);
callback(bitmap);
}
const imageLoader = new egret.ImageLoader();
imageLoader.once(egret.Event.COMPLETE, onImageLoaded, this);
const url = getResPath() + "resource/assets/startScene/bg.jpg"
imageLoader.load(url);
}
private async runGame() { private async runGame() {
await this.loadResource() await this.loadResource()
this.createGameScene(); this.createGameScene();
...@@ -133,12 +168,25 @@ export default class MainBase extends eui.UILayer { ...@@ -133,12 +168,25 @@ export default class MainBase extends eui.UILayer {
}) })
} }
/** /**
* 创建场景界面 * 创建场景界面
* Create scene interface * Create scene interface
*/ */
_startSceneReady = false;
protected createGameScene() { protected createGameScene() {
SceneCtrl.instance.change(ModuleTypes.START_SCENE); SceneCtrl.instance.change(ModuleTypes.START_SCENE, null, () => {
this._startSceneReady = true;
this.check();
});
}
check() {
if (this._startSceneReady && this._firstBgLoaded) {
layers.removeFirstBackground();
const t = Date.now() - window['__startTime__'];
console.log(`start scene显示时间:${t}ms`);
//开始场景图集和开始场景背景全部加载完成并显示
}
} }
} }
\ No newline at end of file
...@@ -6,7 +6,7 @@ export default class Alert extends Panel { ...@@ -6,7 +6,7 @@ export default class Alert extends Panel {
this.data.btnTxt = btnTxt || '确定'; this.data.btnTxt = btnTxt || '确定';
} }
protected get skinKey() { return 'Alert' } get skinKey() { return 'Alert' }
protected get closeBtns(): eui.Button[] { protected get closeBtns(): eui.Button[] {
return [this['closeBtn']] return [this['closeBtn']]
......
...@@ -4,6 +4,9 @@ export default class ComponentBase extends eui.Component { ...@@ -4,6 +4,9 @@ export default class ComponentBase extends eui.Component {
constructor() { constructor() {
super(); super();
this.data = {}; this.data = {};
}
loadSkin() {
this.skinName = getSkinPath(this.skinKey); this.skinName = getSkinPath(this.skinKey);
if (this.skin) { if (this.skin) {
this.onSkinComplete(); this.onSkinComplete();
...@@ -20,7 +23,7 @@ export default class ComponentBase extends eui.Component { ...@@ -20,7 +23,7 @@ export default class ComponentBase extends eui.Component {
} }
protected get skinKey() { return null } get skinKey():string { return null }
protected onSkinComplete() { protected onSkinComplete() {
this.initEvents(); this.initEvents();
......
...@@ -53,5 +53,5 @@ export default class HTMLRulePanel extends Panel { ...@@ -53,5 +53,5 @@ export default class HTMLRulePanel extends Panel {
} }
} }
protected get skinKey() { return 'Rule' } get skinKey() { return 'Rule' }
} }
\ No newline at end of file
...@@ -10,6 +10,7 @@ export default class Loading extends ComponentBase { ...@@ -10,6 +10,7 @@ export default class Loading extends ComponentBase {
super(); super();
this.horizontalCenter = 0; this.horizontalCenter = 0;
this.verticalCenter = 0; this.verticalCenter = 0;
this.loadSkin();
} }
show() { show() {
...@@ -38,5 +39,5 @@ export default class Loading extends ComponentBase { ...@@ -38,5 +39,5 @@ export default class Loading extends ComponentBase {
this.data.speed += 5; this.data.speed += 5;
} }
protected get skinKey() { return 'Loading' } get skinKey() { return 'Loading' }
} }
...@@ -33,5 +33,5 @@ export default class OptionsPanel extends Panel { ...@@ -33,5 +33,5 @@ export default class OptionsPanel extends Panel {
return `第${data['scopeOrigin']}名`; return `第${data['scopeOrigin']}名`;
} }
protected get skinKey() { return 'Options' } get skinKey() { return 'Options' }
} }
\ No newline at end of file
...@@ -18,5 +18,5 @@ export default class PlaySceneBase extends Scene { ...@@ -18,5 +18,5 @@ export default class PlaySceneBase extends Scene {
}, this.score) }, this.score)
} }
protected get skinKey() { return 'Play' } get skinKey() { return 'Play' }
} }
\ No newline at end of file
...@@ -53,7 +53,7 @@ export default class PrizePanel extends Panel { ...@@ -53,7 +53,7 @@ export default class PrizePanel extends Panel {
img: eui.Image; img: eui.Image;
useBtn: eui.Button; useBtn: eui.Button;
protected get skinKey() { return 'Prize' } get skinKey() { return 'Prize' }
protected get closeBtns(): eui.Button[] { protected get closeBtns(): eui.Button[] {
return [this['closeBtn']] return [this['closeBtn']]
......
...@@ -91,5 +91,5 @@ export default class RankPanel extends Panel { ...@@ -91,5 +91,5 @@ export default class RankPanel extends Panel {
} }
protected get skinKey() { return 'Rank' } get skinKey() { return 'Rank' }
} }
\ No newline at end of file
...@@ -21,5 +21,5 @@ export default class RulePanel extends Panel { ...@@ -21,5 +21,5 @@ export default class RulePanel extends Panel {
this.labContent.textFlow = (new HtmlTextParser).parser(DataManager.ins.getRuleData.ruleText); this.labContent.textFlow = (new HtmlTextParser).parser(DataManager.ins.getRuleData.ruleText);
} }
protected get skinKey() { return 'Rule' } get skinKey() { return 'Rule' }
} }
\ No newline at end of file
...@@ -93,5 +93,5 @@ export default class StartSceneBase extends Scene { ...@@ -93,5 +93,5 @@ export default class StartSceneBase extends Scene {
PanelCtrl.instance.show(ModuleTypes.RANK_PANEL); PanelCtrl.instance.show(ModuleTypes.RANK_PANEL);
} }
protected get skinKey() { return 'Start' } get skinKey() { return 'Start' }
} }
\ No newline at end of file
import { ModuleTypes } from "../types/sceneTypes"; import { ModuleTypes } from "../types/sceneTypes";
import Panel from "../components/Panel"; import Panel from "../components/Panel";
import Loading from "../components/Loading";
export default class PanelCtrl { export default class PanelCtrl {
private _parent: egret.Sprite; private _parent: egret.Sprite;
private _mask: egret.Sprite; private _mask: egret.Sprite;
...@@ -13,14 +14,27 @@ export default class PanelCtrl { ...@@ -13,14 +14,27 @@ export default class PanelCtrl {
} }
show(type: ModuleTypes, data?) { show(type: ModuleTypes, data?) {
this.addMask();
const cls = this._panelClassMap[type]; const cls = this._panelClassMap[type];
const panel: Panel = new cls(data); const panel: Panel = new cls(data);
this.addMask();
if (!window['development']) {
Loading.instace.show();
RES.getResByUrl(`${panel.skinKey.toLowerCase()}_json`, (sheet: egret.SpriteSheet) => {
Loading.instace.hide();
this.showAfterLoadAtlas(panel, data);
}, this, RES.ResourceItem.TYPE_SHEET);
} else {
this.showAfterLoadAtlas(panel, data);
}
return panel;
}
showAfterLoadAtlas(panel: Panel, data) {
panel.loadSkin();
this._current = panel; this._current = panel;
panel.start(data); panel.start(data);
this.add(panel); this.add(panel);
egret.Tween.get(panel).set({ y: -200 }).to({ y: 0 }, 500, egret.Ease.getBackOut(2)); egret.Tween.get(panel).set({ y: -200 }).to({ y: 0 }, 500, egret.Ease.getBackOut(2));
return panel;
} }
addMask() { addMask() {
...@@ -31,7 +45,7 @@ export default class PanelCtrl { ...@@ -31,7 +45,7 @@ export default class PanelCtrl {
this._mask.graphics.drawRect(0, 0, 750, 1624); this._mask.graphics.drawRect(0, 0, 750, 1624);
this._mask.graphics.endFill(); this._mask.graphics.endFill();
} }
this._mask.alpha=1; this._mask.alpha = 1;
this._parent.addChild(this._mask); this._parent.addChild(this._mask);
} }
removeMask() { removeMask() {
......
import { ModuleTypes } from "../types/sceneTypes"; import { ModuleTypes } from "../types/sceneTypes";
import Scene from "../components/Scene"; import Scene from "../components/Scene";
import Loading from "../components/Loading";
export default class SceneCtrl { export default class SceneCtrl {
private _parent: egret.Sprite; private _parent: egret.Sprite;
private _currentScene: Scene; private _currentScene: Scene;
private _mask: egret.Sprite;
static _instance: SceneCtrl; static _instance: SceneCtrl;
static get instance() { static get instance() {
...@@ -12,15 +14,41 @@ export default class SceneCtrl { ...@@ -12,15 +14,41 @@ export default class SceneCtrl {
this._parent = parent; this._parent = parent;
} }
change(type: ModuleTypes) { change(type: ModuleTypes, data?, onComplete?: Function) {
const cls = this._sceneClassMap[type];
const scene: Scene = new cls();
if (!window['development']) {
Loading.instace.show();
RES.getResByUrl(`${scene.skinKey.toLowerCase()}_json`, (sheet: egret.SpriteSheet) => {
Loading.instace.hide();
this.showAfterLoadAtlas(scene, data, onComplete);
}, this, RES.ResourceItem.TYPE_SHEET);
} else {
this.showAfterLoadAtlas(scene, data, onComplete);
}
}
showAfterLoadAtlas(scene: Scene, data, onComplete: Function) {
if (this._currentScene) { if (this._currentScene) {
this._currentScene.destroy(); this._currentScene.destroy();
this._parent.removeChild(this._currentScene); this._parent.removeChild(this._currentScene);
} }
const cls = this._sceneClassMap[type]; scene.loadSkin();
const scene: Scene = new cls();
scene.start(); scene.start();
this.addToStage(scene); this.addToStage(scene);
onComplete && onComplete();
}
addMask() {
if (!this._mask) {
this._mask = new egret.Sprite();
this._mask.touchEnabled = true;
this._mask.graphics.beginFill(0, .7);
this._mask.graphics.drawRect(0, 0, 750, 1624);
this._mask.graphics.endFill();
}
this._mask.alpha = 1;
this._parent.addChild(this._mask);
} }
private addToStage(scene: Scene) { private addToStage(scene: Scene) {
......
...@@ -2,16 +2,36 @@ class Layers extends eui.UILayer { ...@@ -2,16 +2,36 @@ class Layers extends eui.UILayer {
private _topLayer: egret.Sprite; private _topLayer: egret.Sprite;
private _popupLayer: egret.Sprite; private _popupLayer: egret.Sprite;
private _sceneLayer: egret.Sprite; private _sceneLayer: egret.Sprite;
private _bottomLayer: egret.Sprite;
init(root: eui.UILayer) { init(root: eui.UILayer) {
root.addChild(this); root.addChild(this);
this._topLayer = new egret.Sprite(); this._topLayer = new egret.Sprite();
this._popupLayer = new egret.Sprite(); this._popupLayer = new egret.Sprite();
this._sceneLayer = new egret.Sprite(); this._sceneLayer = new egret.Sprite();
this._bottomLayer = new egret.Sprite();
this.addChild(this._bottomLayer);
this.addChild(this._sceneLayer); this.addChild(this._sceneLayer);
this.addChild(this._popupLayer); this.addChild(this._popupLayer);
this.addChild(this._topLayer); this.addChild(this._topLayer);
} }
_removeTag: number;
_bg: egret.Bitmap;
addFirstBackground(bitmap: egret.Bitmap): any {
if (!this._removeTag) {
this._bg = bitmap;
this._bottomLayer.addChild(bitmap);
}
}
removeFirstBackground(): any {
this._removeTag = 1;
if (this._bg) {
this._bottomLayer.removeChild(this._bg);
this._bg = null;
}
}
get topLayer() { return this._topLayer } get topLayer() { return this._topLayer }
get popupLayer() { return this._popupLayer } get popupLayer() { return this._popupLayer }
get sceneLayer() { return this._sceneLayer } get sceneLayer() { return this._sceneLayer }
......
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"loading","version":5,"files":["../assets/loading/bg.png","../assets/loading/progress.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"options","version":5,"files":["../assets/option/line2.png","../assets/option/prizeBg.png","../assets/option/X-1.png","../assets/option/line.png"]}
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
}, },
{ {
"keys": "line2_png,prizeBg_png,X-1_png,line_png", "keys": "line2_png,prizeBg_png,X-1_png,line_png",
"name": "option" "name": "options"
}, },
{ {
"keys": "alertbg_png", "keys": "alertbg_png",
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
{ {
"keys": "X_png,ruleBg_png", "keys": "X_png,ruleBg_png",
"name": "rule" "name": "rule"
},
{
"keys": "bg_png,progress_png",
"name": "loading"
} }
], ],
"resources": [ "resources": [
...@@ -209,6 +213,16 @@ ...@@ -209,6 +213,16 @@
"url": "assets/playscene/testbtn.png", "url": "assets/playscene/testbtn.png",
"type": "image", "type": "image",
"name": "testbtn_png" "name": "testbtn_png"
},
{
"url": "assets/loading/bg.png",
"type": "image",
"name": "bg_png"
},
{
"url": "assets/loading/progress.png",
"type": "image",
"name": "progress_png"
} }
] ]
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
"autoGenerateExmlsList": true, "autoGenerateExmlsList": true,
"exmls": [ "exmls": [
"resource/skins/AlertSkin.exml", "resource/skins/AlertSkin.exml",
"resource/skins/LoadingSkin.exml",
"resource/skins/OptionItemSkin.exml", "resource/skins/OptionItemSkin.exml",
"resource/skins/OptionsSkin.exml", "resource/skins/OptionsSkin.exml",
"resource/skins/PlaySkin.exml", "resource/skins/PlaySkin.exml",
......
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="loadingSkin" width="750" height="1206" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing" xmlns:tween="egret.tween.*">
<w:Declarations>
</w:Declarations>
<e:Image y="288" source="bg_png" horizontalCenter="0"/>
<e:Image id="waitImg" source="progress_png" y="380" anchorOffsetX="28" anchorOffsetY="28" horizontalCenter="0" rotation="{data.speed}"/>
</e:Skin>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment