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

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

 
黑乎乎界面->(游戏定制的加载)你的第一个场景->(游戏定制加载)你的第二个场景->(游戏定制加载)你的第三个场景
 
一般思路
自己定义装载界面->(游戏定制的加载)你的第一个场景->(游戏定制加载)你的第二个场景->(游戏定制加载)你的第三个场景
 
我的思路:
屏蔽默认黑乎乎->(定制游戏加载画面)你的第一个场景留空->(定制游戏加载画面)你的第二个场景
 
一般小游戏就是加载玩,直接在里面玩耍,过程中其实不应该有游戏切换的情况
那么我就把所有游戏都放在第二个场景里面。第一个场景由于是空的,绝大部分资源也被黑乎乎界面加载了,
所以理论上第一个场景的加载界面是不会出现的。然后我们又通过屏蔽掉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. hdoj 2502 月之数

    月之数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. 新安装XAMPP,phpMyAdmin错误:#1045 - Access denied for user 'root'@'localhost' (using password: NO)

    错误如下: 打开D:\Program Files\xampp\phpMyAdmin(你的xampp的安装目录下的phpMyAdmin目录)目录下的config.inc.php文件 将 改为 然后,错误 ...

  3. ViewPager的用法和实现过程

    看图先:          页面中填充内容是随机关键词飞入和飞出动画效果,随后会更新,如今请先无视吧 首先是 导入jar包   下载地址:android-support-v4.jar 布局文件中加入v ...

  4. InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具

    InstallShield 12 豪华版+破解版 下载 下载速度:220kb/s InstallShield 12为软件发行方提供率先的安装程序解决方式,可以制作强大可靠的Windows Instal ...

  5. pugixml

    http://www.firedragonpzy.com.cn/index.php/archives/3227 有关cocos2d-x的xml文件读取问题

  6. 【NodeJs】用arrayObject.join('')处理粘包的错误原因

    服务器测试代码如下: var net = require('net'); var server = net.createServer(function(c){ console.log('client ...

  7. 【Android】知晓当前是哪一个活动

    首先需要新建一个 BaseActivity 继承自Activity,然后在 BaseActivity 中重写 onCreate()方法,如下所示:public class BaseActivity e ...

  8. System Operations on AWS - Lab 7 - CloudFormation

    CloudFormation模板:创建一个VPC(包含Public子网,Private子网,分别在不同的AZ),创建NAT,Bastion Server在Public子网. 1. 修改并运行AWS C ...

  9. Managing Group Policy with PowerShell

    Overview In this article, I’ll talk about your options when it comes to managing Group Policy using ...

  10. extSourceStat_7Day_Orders.php

    <?php /** Log文件格式2012/7/4 列号 字段含义 取值 ------------------------------------------------------------ ...