LayaBox进阶之UI管理器
自己动手写框架的话,UI管理器是最基础的一部分;
export class UIManager {
private mainContent: Laya.Sprite;
private scene: GameScence;
private uiList:any[]; constructor() {
this.mainContent = new Laya.Sprite(); this.uiList = [];
}
}
mainContent 为默认添加到的层级,
public openWindow(clazz: any, param?: { data?: any }) {
let view = new clazz()
this.setView(clazz, view);
this.mainContent.addChild(view);
}
private setView(clazz: any, view:Laya.Node):void{
let v: Laya.Node = this.getView(clazz);
if(!v){
let uiData = {clazz: clazz, view: view};
this.uiList.push(uiData);
}
}
首先判断本地缓存有没有,有的话 不处理,没得话,创建,push到数组中
private getView(clazz: any):Laya.Node{
for(let i:number =0 ; i<this.uiList.length ; i++){
let uiData = this.uiList[i];
if(uiData.clazz == clazz){
return uiData.view;
}
}
}
public closeWindow(clazz: any): void {
let v = this.getView(clazz);
let index: number = this.getViewIndex(clazz);
if(v){
v.removeSelf();
this.uiList.splice(index,1);
}
}
private getViewIndex(clazz: any):number{
for(let i:number =0 ; i<this.uiList.length ; i++){
let uiData = this.uiList[i];
if(uiData.clazz == clazz){
return i;
}
}
return -1;
}
public setGameScene(gameScene: GameScence): void {
this.scene = gameScene;
if (this.scene) {
this.scene.parent.addChild(this.mainContent);
}
}
export let ui: UIManager = new UIManager();
window["ui"] = ui;
import { LogUtil } from "../util/LogUtil"; /**
* 为基类定义若干方法
*/
export class PatchManager{}
(function(){
let _proto:any; _proto = Laya.Scene.prototype;
_proto.createView = function(view:Object){
if (view && !this._viewCreated) {
this._viewCreated = true;
Laya.SceneUtils.createByData(this, view);
} this.onInit();
this.onShow(); Laya.timer.frameLoop(1, this, ()=>{
// console.info(this);
this.onUpdate();
});
} /********************************************************************************
* Node
********************************************************************************/
_proto = Laya.Node.prototype; _proto.onInit = function(){
} _proto.onShow = function(){
} _proto.onUpdate = function(){
} _proto.onDisable=function(){
this.onHide();
} _proto.onHide = function(){
}
})();
LayaBox进阶之UI管理器的更多相关文章
- 游戏开发之UI管理器(跨引擎)
使用UI管理器的目的 使用单场景与zindex结合的方式管理UI. 能够隐藏底层UI达到优化效果. 很好的组织和管理UI. 跨引擎使用. 管理器分类 根据以往经验我开发了三种类型的管理器,队列管理器, ...
- Python进阶(上下文管理器与with语句)
/*上下文管理器必须有__enter__和__exit__方法*/ class MyResource: def __enter__(self): print('链接资源') return self / ...
- Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备二)
接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方. 1. UIManager.h:UI管理器, ...
- 第1组UI组件:布局管理器
1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...
- Java可视化编程,基于布局管理器的UI设计
在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...
- Swing-布局管理器应用--WIN7上计算器的UI实现
学完了Swing布局管理器,为了加深理解我决定做一些UI的实现,那就从WIN7上的计算器开始吧!首先,我们来研究一下它的UI.该计算器的UI主要有3个,分别是标准型.科学型和程序员型,如下图所示. ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- [cocos2dx笔记010]用于UI的事件管理器
cocos2dx有一个编辑器:cocostudio.眼下来说,已经是比較好用了.仅仅要载入导出的资源.就能够用上了.省去手动搭建面的麻烦. 可是.非常多须要事件的地方,操作比較麻烦,所以这里提供一个事 ...
- 基于Web的Kafka管理器工具之Kafka-manager安装之后第一次进入web UI的初步配置(图文详解)
前期博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解) 基于Web的Kafka管理器工具之Kafka- ...
随机推荐
- Java web的安全约束--Basic验证
要进行basic验证是用户名/口令机制,当浏览器要访问受保护的资源时,服务器会要求一个用户名和口令,只有输入了合法的用户名和口令.服务器才发送资源.用户名和口令可以存储在安全域中.安全域是标识一个We ...
- UIRecorder安装与使用
继vue单元测试,将进行vue的e2e测试学习. 学习点: 安装uirecorder 用工具(UI Recorder)录制测试脚本 测试脚本的回放 本文意在安装UI Recorder,并且利用该工具进 ...
- 学习笔记-java 多线程
背景说明: 多线程并发与管理,是java基础知识里的重点,本文根据<java核心技术第八版>中的多线程技术的学习,对知识点进行整理:这里只对基础知识点进行简单罗列,以达到对知识点有网状关联 ...
- 在Centos 7上安装Docker
在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...
- day1 python 介绍、基本语法、流程控制
请查看我的云笔记链接: http://note.youdao.com/noteshare?id=0ea7425d3e3669800cb0d73f7ec8865d&sub=D87B4BF820C ...
- 下学期第三次作业——SQA计划和验收测试规程设计
一.SQA计划 1.目的 在做云医院这个项目中,严格遵循SQA的计划,确保软件的质量的到保证 2.范围 随着项目的进行,不断的去改变计划,在项目开发的整个生命周期内. 3.人员分工 姓名 角色 开始时 ...
- Android(java)学习笔记31:泛型高级之通配符
1. 泛型高级之通配符: package cn.itcast_07; import java.util.ArrayList; import java.util.Collection; /* * 泛型高 ...
- CF578C Weakness and Poorness
嘟嘟嘟 题面:给一个序列中的,每一个数都减去一个实数x,使得到的新序列的max(最大连续和,|最小连续和|)最小.(|ai| <= 10000) 感性的想想,会发现最大连续和随x变大而变小,最小 ...
- 2018.12.21 如何在现有的Eclipse(4.9.0版本)中安装STS (Spring Tool Suite ) Mac环境下
在Eclipse中安装STS正确步骤实现方式 1.简介说明 spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现 ...
- Gulp 方法
Gulp有5个基本方法:src.dest.task.run.watch Gulp.src() gulp模块的src方法,用于产生数据流.它的参数表示索要处理的文件,一般有以下几种形式: js ...