Commit 3b8bf5a6 authored by Tt's avatar Tt

背景适配

parent b3a9e6f0
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import pg from "./pg_sn19_read";
const { ccclass, property } = cc._decorator;
@ccclass
export default class ResizeAuto extends cc.Component {
@property
r_width: number = 1
@property
r_height: number = 1
@property
r_top: number = 0
@property
r_bottom: number = 0
@property
p_left: number = 0
@property
p_right: number = 0
@property
p_top: number = 0
@property
p_bottom: number = 0
@property
noHead: number = 0
@property
debug: number = 0
// LIFE-CYCLE CALLBACKS:
private resizeScaleX;
private resizeScaleY;
private posX;
private posY;
private nodeWidth;
private nodeHeight;
private nodeX;
private nodeY;
onLoad() {
let { scaleX, posX, scaleY, posY } = pg.screen.winBlackArea();
this.resizeScaleX = scaleX;
this.resizeScaleY = scaleY;
this.posX = posX;
this.posY = posY;
let { width, height, x, y } = this.node;
this.nodeWidth = width;
this.nodeHeight = height;
this.nodeX = x;
this.nodeY = y;
}
start() {
this.resize();
}
onDestroy() {
}
resize() {
if (!this.resizeScaleX && !this.nodeWidth) {
console.warn("手动调用此方法时,不能再onLoad中使用");
return;
}
this.resizeHeight();
this.resizeWidth();
}
//高屏幕适配
resizeHeight() {
if (this.resizeScaleY <= 1.05) return;
let scaleY = this.resizeScaleY;
let posY = this.posY;
let nodeWidth = this.nodeWidth;
let nodeHeight = this.nodeHeight;
let nodeX = this.nodeX;
let nodeY = this.nodeY;
if (this.debug == 1) {
pg.logger.d("断点调试点");
}
//宽度拉伸
if (this.r_width == 1) {
this.node.width = nodeWidth * scaleY;
}
//高度拉升
if (this.r_height == 1) {
this.node.height = nodeHeight * scaleY;
}
//动态上移
if (this.p_top > 0) {
if (this.p_top == 1) this.p_top = 0.5;
this.node.y = nodeY + posY / 2 * this.p_top
}
//动态下移
if (this.p_bottom > 0) {
if (this.p_bottom == 1) this.p_bottom = 0.5;
this.node.y = nodeY - posY / 2 * this.p_bottom
}
}
//长屏幕适配
resizeWidth() {
if (this.resizeScaleX <= 1.05) return;
let resizeScaleX = this.resizeScaleX;
let posX = this.posX;
let nodeWidth = this.nodeWidth;
let nodeHeight = this.nodeHeight;
let nodeX = this.nodeX;
let nodeY = this.nodeY;
if (this.debug == 1) {
pg.logger.d("断点调试点");
}
//宽度拉伸
if (this.r_width == 1) {
this.node.width = nodeWidth * resizeScaleX;
}
//高度拉升
if (this.r_height == 1) {
this.node.height = nodeHeight * resizeScaleX;
//高度拉伸后,图片顶部齐边【坐标下移】 y坐标下移
if (this.r_top == 1) {
this.node.y = nodeY - nodeHeight * (resizeScaleX - 1) / 2;
}
//高度拉伸后,图片底部齐边【坐标上移】 y坐标上移
if (this.r_bottom == 1) {
this.node.y = nodeY + nodeHeight * (resizeScaleX - 1) / 2;
}
}
//如果是刘海屏,减去对应的刘海屏的宽度
let lhpSize = { top: 0, bottom: 0 };
if (!this.noHead && posX != 0) lhpSize = { top: 44 * 1.5, bottom: 34 * 1.5 };
//动态左移
if (this.p_left == 1) {
this.node.x = nodeX - posX / 2 + lhpSize.top;
}
//动态右移
if (this.p_right == 1) {
this.node.x = nodeX + posX / 2 - lhpSize.bottom;
}
}
}
{
"ver": "1.0.8",
"uuid": "79098fb5-a7de-4cc7-a32f-58ca68556b2b",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
interface BlackArea {
scaleX: number;
scaleY: number;
posX: number;
posY: number;
moveX: number;
moveY: number;
}
class Screen {
static instance;
static getIns(): Screen {
if (!Screen.instance) {
Screen.instance = new Screen();
}
return Screen.instance;
}
winSize(): cc.Size {
return cc.view.getCanvasSize();
}
designSize(): cc.Size {
return cc.view.getDesignResolutionSize();
}
winBlackArea(): BlackArea {
//0.设计尺寸
let baseSize = cc.size(this.designSize().width, this.designSize().height);
//1.获取屏幕尺寸
// let canvasSize = cc.sys.getSafeAreaRect();
let canvasSize = cc.view.getCanvasSize();
//2.将屏幕宽高 以高度对齐的方式 换算出场景 宽度
let sumSizeW = cc.size(canvasSize.width * baseSize.height / canvasSize.height, baseSize.height)
//3.计算场景宽度与设计宽度比率
let scaleX = sumSizeW.width / baseSize.width;
//高屏幕适配
if (scaleX <= 1) {
let sumSizeY = cc.size(baseSize.width, canvasSize.height * (baseSize.width / canvasSize.width))
let scaleY = sumSizeY.height / baseSize.height;
let posY = sumSizeY.height - baseSize.height;
return {
scaleX: 1,
posX: 0,
moveX: 0,
scaleY: scaleY,
posY: posY,
moveY: - posY / 2
}
} else {
let posX = sumSizeW.width - baseSize.width;
//需要拓展的宽度缩放比
return {
scaleX: scaleX,
posX: posX,
moveX: - posX / 2,
scaleY: 1,
posY: 0,
moveY: 0
};
}
}
}
class Emitter {
static instance;
static getInstance() {
......@@ -718,6 +778,7 @@ let pg = {
return event;
}
},
screen: Screen.getIns(),
event: Emitter.getInstance()
};
export default pg;
......
......@@ -427,31 +427,24 @@
"_id": "584qeG0k9IfrhLzNSAoSOF"
},
{
"__type__": "cc.Widget",
"__type__": "79098+1p95Mx6MvWMpoVWsr",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 6
},
"_enabled": true,
"alignMode": 1,
"_target": null,
"_alignFlags": 45,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_verticalCenter": 0,
"_horizontalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 1920,
"_originalHeight": 1080,
"_id": "d8xDZnDTJJ3b870mrQFPdh"
"r_width": 1,
"r_height": 1,
"r_top": 1,
"r_bottom": 1,
"p_left": 0,
"p_right": 0,
"p_top": 0,
"p_bottom": 0,
"noHead": 0,
"debug": 0,
"_id": "15sIfrQ8pIgJUH+TnoiRem"
},
{
"__type__": "cc.Node",
......
This diff is collapsed.
......@@ -28,7 +28,11 @@ export const defaultData =
npcAudio: "http://staging-teach.cdn.ireadabc.com/7f617b30a5eb2a090234920500f9c7ce_l.mp3",
npcAudioName: "right_sn17_danci.mp3"
}, {
"type": "img_txt_audio", "imageBig": 1, "image": "http://staging-teach.cdn.ireadabc.com/ef1e6f871b37ad482e268809e91d20b7.png", "audio": "http://staging-teach.cdn.ireadabc.com/5f4e4c72671607bb35d1ecd1d291f238_l.mp3", "text": "", "duration": 10, "content": "", "right": false, "audioName": "excellent_dg10_ty.mp3"
"type": "img_txt_audio", "imageBig": 1,
"image": "http://staging-teach.cdn.ireadabc.com/ef1e6f871b37ad482e268809e91d20b7.png",
"audio": "http://staging-teach.cdn.ireadabc.com/5f4e4c72671607bb35d1ecd1d291f238_l.mp3",
"text": "", "duration": 10, "content": "", "right": false,
"audioName": "excellent_dg10_ty.mp3"
}]
}],
"bgAudio": "", "bgAudioName": "", "audioName": "", "npcTitle": "test",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment