LayBox 3D场景的加载和对里面对象的控制

本文介绍如何在Laya3D游戏中进行场景加载,包括加载U3D场景、控制物体移动,以及使用事件处理器类Handler。还涉及到对象的控制,如按钮点击限制、进度条、滑动条和复选框的使用,以及3D向量和四元数的应用。
摘要由CSDN通过智能技术生成

防止按钮点击一次 ,函数执行多次
private clickTime=0;
public ClickGoldBtnTimes() {
//this.showBanner();
if(Laya.Browser.now() - this.clickTime <= 100){
console.log(“点击失败”);
this.goldBtn.off(Laya.Event.CLICK,this,this.GoldcallBack);
return ;
}
else{
this.goldBtn.on(Laya.Event.CLICK, this,this.GoldcallBack);
}
this.clickTime=Laya.Browser.now() ;
}

GoldcallBack(){  
    this.goldTimes++;
    console.log("点击了goldBtn" + this.goldTimes);
    this.showBanner();
}

//砸金蛋的函数 计时器
showBanner() {
//如果showBannerAd流量主界面已经存在,先把他关闭
platform.hideBannerAd();
let a = function () {
console.log(“3秒时间到,弹出流量主”);
platform.showBannerAd();
}
//goldEgg界面出现3秒以后就显示流量主
Laya.timer.once(3000, this, a)
//如果三秒之前就点击超过了10次,就不在计时弹出流量组
console.log(“调用showBanner” + this.goldTimes);
if (this.goldTimes >= 10) {
console.log(“10次以后砸蛋成功”);
this.goldEgg.visible = false;
Laya.timer.clear(this, a);
//奖励用户金币100~200之间
let gold = 100 + Math.random() * 101;
this.AddGoldEgg(gold);
this.goldTimes = 0;
}
}

设备像素分辨率:Laya.Browser.clientWidth,Laya.Browser.clientHeight;
设备物理分辨率:Laya.Browser.width,Laya.Browser.height;
像素比:Laya.Browser.pixelRatio;
(显然平时常用的是:设备物理分辨率 width 与 height ,它们代表着浏览器窗口的实际分辨率)

Hander 事件处理器类

https://blog.csdn.net/wangmx1993328/article/details/86152443

1、Handler 是事件 处理器 类。这是优化内存的方式之一,可以参考《LayaAir 对象池 laya.utils.Pool》

2、推荐使用 Handler.create() 方法从对象池创建,减少对象创建消耗。创建的 Handler 对象不再使用后,可以使用 Handler.recover() 将其回收到对象池,回收后不要再使用此对象,否则会导致不可预料的错误。

3、注意:由于鼠标事件也用本对象池,不正确的回收及调用,可能会影响鼠标事件的执行。

4、开发过程中会经常使用 Handler 来完成异步回调。Laya.Handler.create 使用了内置对象池管理,因此在使用Handler对象时可使用 Laya.Handler.create 来创建回调处理器。以下代码使用 Laya.Handler.create 创建资源加载的回调处理器:
Laya.loader.load(urls, Laya.Handler.create(this, onAssetLoaded));

laya.utils.Handler
Laya.Handler 这个类使用的非常多。 一般一次性的操作需要透传我都会使用 Laya.Handler.create() 从对象池内创建一个Handler事件处理器类,默认会执行一次并立即回收,如果不需要自动回收,设置once参数为false。
这个方法进行透传 回调 它指向某些资源(可以是函数,内存等等)。

Promise异步加载(资源,图片) 用以微信分包

//game.json类
{
“name”: “ui”,
“root”: “ui”
}
//main.ts类

private loadSub(name): Promise {//异步加载,返回一个已给定解析后的对象
return new Promise((resolve, reject) => {
const loadTask = wx.loadSubpackage({ //微信加载分包
name: name,
success: resolve,
fail: reject,
})
})
}

onConfigLoaded(): void {
//加载IDE指定的场景
if (wx) {
// const loadTask = wx.loadSubpackage({
// name: ‘subpackages’, // name 可以填 name 或者 root
// success: function (res) {
// // 分包加载成功后通过 success 回调
// // GameConfig.startScene && Laya.Scene.open(GameConfig.startScene);
// Laya.loader.load([“ui/loadui/背景.png”], Laya.Handler.create(this, () => {
// GameConfig.startScene && Laya.Scene.o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值