Files
fc/dev/project/library/imports/8f/8f5f6404-cfef-4cf9-a07c-b024b299ed9a.js
T

74 lines
2.0 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '8f5f6QEz+9M+aB8sCSyme2a', 'nx.fx.scale');
// Scripts/nx/cmp/flex/nx.fx.scale.js
"use strict";
/******************************************************************
* Copyright(C) 2019 - 2020 Nx Studio
*
* NX UI插件 -- 自动缩放
*
* 2018.05.18
******************************************************************/
cc.Class({
"extends": cc.Component,
properties: {},
// 编辑器特性
editor: {
// 允许当前组件在编辑器模式下运行
executeInEditMode: false,
// requireComponent 参数用来指定当前组件的依赖组件
requireComponent: null,
// 当本组件添加到节点上后,禁止同类型(含子类)的组件再添加到同一个节点,防止逻辑发生冲突
disallowMultiple: true,
// menu 用来将当前组件添加到组件菜单中,方便用户查找
menu: "Nx/组件|自动缩放"
},
// 显示
onEnable: function onEnable() {
// 监听尺寸改变
var parent = this.node.parent;
if (parent) {
parent.on("size-changed", this.autoScale.bind(this));
}
},
// 关闭
onDisable: function onDisable() {
// 解除监听尺寸改变
var parent = this.node.parent;
if (parent) {
parent.off("size-changed", this.autoScale.bind(this));
}
},
// 自动缩放
autoScale: function autoScale() {
// 横屏缩放
if (nx.frame.vget("IsLandscape")) {
this.scaleHOR();
return;
}
// 竖屏缩放
this.scaleVER();
},
// 横屏缩放
scaleHOR: function scaleHOR() {
// 缩放规则:当前宽高比>MaxWHRate则进行等比扩大
var st = nx.frame.vget("MaxWHRate");
var fs = cc.view.getFrameSize();
var rate = fs.width / fs.height;
if (rate > st) {
this.node.scale = rate / st;
} else {
this.node.scale = 1;
}
},
// 竖屏缩放
scaleVER: function scaleVER() {
nx.warn("$NxScale:竖屏缩放尚未实现!");
}
});
cc._RF.pop();