加载界面如果全部通过自己手动布局不仅不美观,还很难控制。借用原生的场景切换加载效果,来实现我们游戏的加载效果。

没有做加载修改的原来的加载顺序:

 
黑乎乎界面->(游戏定制的加载)你的第一个场景->(游戏定制加载)你的第二个场景->(游戏定制加载)你的第三个场景
 
一般思路
自己定义装载界面->(游戏定制的加载)你的第一个场景->(游戏定制加载)你的第二个场景->(游戏定制加载)你的第三个场景
 
我的思路:
屏蔽默认黑乎乎->(定制游戏加载画面)你的第一个场景留空->(定制游戏加载画面)你的第二个场景
 
一般小游戏就是加载玩,直接在里面玩耍,过程中其实不应该有游戏切换的情况
那么我就把所有游戏都放在第二个场景里面。第一个场景由于是空的,绝大部分资源也被黑乎乎界面加载了,
所以理论上第一个场景的加载界面是不会出现的。然后我们又通过屏蔽掉gameSVG关闭掉原来的显示
所以效果就是,白屏,和客户以为在打开,这个感觉重叠了,然后第一个场景是空的,
为我们加载基础脚本带来了方便。然后第一个场景绑定一个场景转跳,跳到第二个场景
这时候激活游戏的预加载机制,显示我们的loading画面。因为库已经加载进来了,
我们的加载就可以做适配界面等等基于库的操作。加载资源体验比较好。
最后加载完了可以在第二场景完成所有游戏的交互。大功告成
 
目前还是要动手修改loading函数里面加个屏蔽svg,为啥屏蔽,因为不屏蔽会有bug,为了省事,不看就好。呵呵
 
用来绑定UIRoot跳转的脚本。绑定在第一个空场景中
/**
* by Again 2016-3-13 0.51.23
* 加载这个节点后第一次刷新后转跳到指定节点
*/
var NextScene = qc.defineBehaviour('qc.demo.NextScene', qc.Behaviour, function() {
// 初始化代码
this.loaded = false;
}, {
// 需要序列化的场景资源名称
scene: qc.Serializer.STRING
});
NextScene.prototype.awake = function() {
this.loaded = false;
}; // 加载下一场景唤醒
NextScene.prototype.update = function() {
var self = this;
if (self.loaded === false) {
self.loaded = true; // 切换到指定场景
if (self.scene) {
self.game.scene.load(self.scene, false, function() {
// 方式1:预加载中,我们可以做一些资源的加载操作
}, function() {
self.game.log.trace('loading new sence ok ({0})', self.scene);
});
}
}
}

UIRoot绑定

用来显示加载状态的脚本,重载下方几个on事件更新你界面元素的状态。
/**
* 场景加载的进度提示获取
*/
var LoadingUI = qc.defineBehaviour('qc.demo.LoadingUI', qc.Behaviour,
function() {
var self = this;
this.clue = null; //默认显示
this.onShow = function() {
self.gameObject.visible = true;
self.gameObject.alpha = 1;
};
//默认消失
this.onHide = function() {
self.gameObject.visible = false;
self.gameObject.alpha = 0;
};
//默认加载中
this.onLoading = function(loaded, total) {
self.game.log.trace("loading :{0}/{1}",loaded,total);
};
}, {
}
); // 初始化处理
LoadingUI.prototype.awake = function() {
// 关注场景开始切换和切换结束的事件
var self = this;
//设置响应事件
this.addListener(self.game.scene.onStartLoad, function() {
// 场景加载开始,显示本界面
if (typeof(self.onShow) === "function") {
self.onShow();
};
});
this.addListener(self.game.scene.onEndLoad, function() {
// 场景加载完毕,隐藏本界面
if (typeof(self.onHide) === "function") {
self.onHide();
};
});
} // 帧调度,保证本界面永远在其他界面之上
LoadingUI.prototype.update = function() {
var self = this,
loaded = self.game.assets.loaded,
total = self.game.assets.total;
// 场景加中
if (typeof(self.onLoading) === "function") {
self.onLoading(loaded, total);
};
}; /////////////////////////////////////////////////////////////////////
// 对外接口
LoadingUI.prototype.setOnShow = function(callback) {
this.onShow = callback;
}; LoadingUI.prototype.setOnHide = function(callback) {
this.onHide = callback;
}; LoadingUI.prototype.setOnLoading = function(callback) {
this.onLoading = callback;
};
 
 

利用青瓷布局自定义加载的场景,而不是自己改写qici-loading的更多相关文章

  1. 利用ViewStub实现布局懒惰加载

    这个问题也是头条面试官问的,本身没什么难度,但以前确实没仔细研究过. 1.使用介绍 ViewStub是一种不可见的尺寸为0的View,用来实现布局资源的懒加载.当ViewStub被设置为用户可见或其  ...

  2. Android 自定义View修炼-自定义加载进度动画XCLoadingImageView

    一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. ...

  3. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  4. (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)

      异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...

  5. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  6. Java类加载机制及自定义加载器

    转载:https://www.cnblogs.com/gdpuzxs/p/7044963.html Java类加载机制及自定义加载器 一:ClassLoader类加载器,主要的作用是将class文件加 ...

  7. asp.net读取用户控件,自定义加载用户控件

    1.自定义加载用户控件 ceshi.aspx页面 <html> <body> <div id="divControls" runat="se ...

  8. 【Unity】使用SceneManager加载/切换场景

    一.直接切换 老版的(已弃用!): Application.LoadLevel(int index); // 参数是场景编号 Application.LoadLevel(string name); / ...

  9. xlua的自定义加载

    具体可以先看xlua的自定义加载的demo,那个用lamda表达式做的 我这个更好理解 主要是ReadFile2的结构问题,必须的写成这样

随机推荐

  1. YII 表单验证规则

    官方文档:http://www.yiichina.com/guide/form.model 类参考手册:http://www.yiichina.com/api/CValidatorhttp://www ...

  2. MongoDB:The Definitive Guide CHAPTER 1 Introduction

    MongoDB is a powerful, flexible, and scalable data store. It combines the ability to scale out with ...

  3. fzu 2135 数字游戏 【水题】

    Problem 2135 数字游戏 Accept: 253    Submit: 392Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem ...

  4. 6步骤实现CentOS系统环境精简优化

    6步骤实现CentOS系统环境精简优化 发布时间:2014-11-03 14:59:27   编辑:AHLinux.com 第一步.删除不必要的自带软件包yum remove Deployment_G ...

  5. python学习笔记--Django入门二 Django 的模板系统

    为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag):   ...

  6. SpringMVC项目学习1_web.xml

    最近接触的所有项目都是SpringMVC+ajax的项目,因此以一个项目为例学习下. --------------------------------------------------------- ...

  7. OKHttp的简单使用

    一方面,最近关于OKHttp的讨论甚嚣尘上,另一方面,我最近也更新了android6.0,发现在6.0中HttpClient不能使用了,于是决定抽时间也看一下OKHttp,总结了一点东西,与大家分享. ...

  8. Java基础知识强化之集合框架笔记60:Map集合之TreeMap(TreeMap<Student,String>)的案例

    1. TreeMap(TreeMap<Student,String>)的案例 2. 案例代码: (1)Student.java: package cn.itcast_04; public ...

  9. 各种SQL类型

    一.SQL:通常我们说的sql指的是最古老运用最方法的结构化查询语言(Structured Query Language),大部分人接触最多的是数据库查询使用,关系型数据库基本都支持. 二.T-SQL ...

  10. php&nbsp;curl_init函数用法

    原文地址:curl_init函数用法">php curl_init函数用法作者:loading 使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓 ...