You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							173 lines
						
					
					
						
							5.9 KiB
						
					
					
				
			
		
		
	
	
							173 lines
						
					
					
						
							5.9 KiB
						
					
					
				import AppConfig from "../Config/AppConfig";
 | 
						|
import AppPlatform from "./AppPlatform";
 | 
						|
import AppSwitchConfig from "../Config/AppSwitchConfig";
 | 
						|
 | 
						|
 | 
						|
export default class Utilit {
 | 
						|
    public static readonly ryw_OriginStageWidth_custom = 1334;
 | 
						|
    public static readonly ryw_OriginStageHeight_custom = 750;
 | 
						|
 | 
						|
 | 
						|
    public static readonly ryw_grayscaleMat_custom: Array<number> =
 | 
						|
        [0.3086, 0.6094, 0.0820, 0, 0,
 | 
						|
            0.3086, 0.6094, 0.0820, 0, 0,
 | 
						|
            0.3086, 0.6094, 0.0820, 0, 0,
 | 
						|
            0, 0, 0, 1, 0];
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
    * 获取一个随机值[0,range)
 | 
						|
    * @param range 
 | 
						|
    */
 | 
						|
    public static random_custom(range: number): number {
 | 
						|
        return Math.floor(Math.random() * range);
 | 
						|
    }
 | 
						|
 | 
						|
    // /**
 | 
						|
    //  * 将游戏中的尺寸转为设备尺寸
 | 
						|
    //  * 常用与将游戏中自定义大小的框来放原生Banner
 | 
						|
    //  * @param cwidth 在设计尺寸中的宽
 | 
						|
    //  * @param bottom 在设计尺寸中距离底部的高度
 | 
						|
    //  */
 | 
						|
    // public static convertDesignToFrameSizeToBottom(cwidth: number = 600, bottom: number = 0) {
 | 
						|
    //     let nodeWidth = cwidth;
 | 
						|
 | 
						|
    //     let size = cc.view.getFrameSize();
 | 
						|
    //     //let size = cc.size(sw, sh);
 | 
						|
    //     //设计尺寸
 | 
						|
    //     let size2 = cc.view.getDesignResolutionSize();
 | 
						|
    //     let nodex = (size2.width - nodeWidth)/2;
 | 
						|
    //     //算出缩放比例
 | 
						|
    //     let scale = size.width / size2.width;
 | 
						|
    //     //屏幕尺寸与设计尺寸计算
 | 
						|
    //     let sHeight = size2.width * size.height / size.width;
 | 
						|
    //     //坐标系Y轴相反
 | 
						|
    //     let pointY = sHeight - pos.y;
 | 
						|
 | 
						|
    //     //左上角
 | 
						|
    //     let left = nodex * scale;
 | 
						|
    //     //左上角
 | 
						|
    //     let top = pointY * scale
 | 
						|
    //     //计算节点宽的处理
 | 
						|
    //     let width = nodeWidth * scale;
 | 
						|
 | 
						|
    //     let tab = {}
 | 
						|
    //     tab["left"] = left;
 | 
						|
    //     tab["top"] = top;
 | 
						|
    //     tab["width"] = width;
 | 
						|
 | 
						|
    //     return tab;
 | 
						|
    // }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * 将游戏中的尺寸转为设备尺寸
 | 
						|
     * 常用与将游戏中自定义大小的框来放原生Banner
 | 
						|
     * @param node 接收的节点
 | 
						|
     * @returns  返回结构体 {"left":0,"top":0,"width":0}
 | 
						|
     */
 | 
						|
    public static convertDesignToFrameSize_custom(node: cc.Node): any {
 | 
						|
        //节点的坐标 将一个相对于节点左下角的坐标位置转换到世界空间坐标系。
 | 
						|
        let pos = node.convertToWorldSpace(cc.v2(0, node.height));
 | 
						|
        let nodeWidth = node.width;//节点宽
 | 
						|
        let size = cc.view.getFrameSize();
 | 
						|
        //当前实际尺寸
 | 
						|
        let size3 = cc.view.getVisibleSize();
 | 
						|
 | 
						|
        let canvasNode = cc.director.getScene().getChildByName('Canvas')
 | 
						|
        let scale = 1;
 | 
						|
        let _cheight: number = 0;
 | 
						|
        let _cwidth: number = 0;
 | 
						|
        if (canvasNode) {
 | 
						|
            let canvas = canvasNode.getComponent(cc.Canvas)
 | 
						|
            if (canvas.fitWidth && canvas.fitHeight) {
 | 
						|
                let scaleX = size.width / size3.width;
 | 
						|
                let scaleY = size.height / size3.height;
 | 
						|
                if (scaleX < scaleY) {
 | 
						|
                    scale = scaleX;
 | 
						|
                    _cwidth = size3.width;
 | 
						|
                    _cheight = size.height * size3.width / size.width
 | 
						|
                } else {
 | 
						|
                    scale = scaleY;
 | 
						|
                    _cheight = size3.height;
 | 
						|
                    _cwidth = size.width * size3.height / size.height
 | 
						|
                }
 | 
						|
                _cheight = (_cheight - size3.height) / 2
 | 
						|
                _cwidth = (_cwidth - size3.width) / 2
 | 
						|
            } else if (canvas.fitWidth) {
 | 
						|
                scale = size.width / size3.width
 | 
						|
            } else if (canvas.fitHeight) {
 | 
						|
                scale = size.height / size3.height
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        //坐标系Y轴相反
 | 
						|
        let pointY = size3.height - pos.y + _cheight;
 | 
						|
        //左上角
 | 
						|
        let left = pos.x * scale + _cwidth;
 | 
						|
        //左上角
 | 
						|
        let top = pointY * scale
 | 
						|
        //计算节点宽的处理
 | 
						|
        let width = nodeWidth * scale;
 | 
						|
 | 
						|
        let tab = {}
 | 
						|
        tab["left"] = left;
 | 
						|
        tab["top"] = top;
 | 
						|
        tab["width"] = width;
 | 
						|
 | 
						|
        return tab;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 颜色16进制转rgb 不带#
 | 
						|
     * @param hex 
 | 
						|
     */
 | 
						|
    public static colorHex2Rgb_custom(hex: string): cc.Color {
 | 
						|
        let color = cc.color(75, 154, 228)
 | 
						|
        if (hex.length == 6) {
 | 
						|
            let r = parseInt("0x" + hex.slice(0, 2))
 | 
						|
            let g = parseInt("0x" + hex.slice(2, 4))
 | 
						|
            let b = parseInt("0x" + hex.slice(4, 6))
 | 
						|
            color.r = r;
 | 
						|
            color.g = g;
 | 
						|
            color.b = b;
 | 
						|
        }
 | 
						|
        return color;
 | 
						|
    }
 | 
						|
 | 
						|
    public static checkVersions_custom(): boolean {
 | 
						|
        let cur = AppConfig.Versions_custom;
 | 
						|
        if (null === cur || "" === cur) {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        if (AppPlatform.is_TT_GAME_custom())//抖音,字节跳动
 | 
						|
        {
 | 
						|
            return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().ttcfg_custom.ttversions_custom;
 | 
						|
        }
 | 
						|
        else if (AppPlatform.is_OPPO_GAME_custom())//oppo小游戏
 | 
						|
        {
 | 
						|
            return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().oppocfg_custom.oppoversions_custom;
 | 
						|
        }
 | 
						|
        else if (AppPlatform.is_QQ_PLAY_custom())//qq小游戏
 | 
						|
        {
 | 
						|
            return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().qqcfg_custom.qqversions_custom;
 | 
						|
        }
 | 
						|
        else if (AppPlatform.is_WECHAT_GAME_custom())//微信小游戏
 | 
						|
        {
 | 
						|
            return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().version_custom;
 | 
						|
        }
 | 
						|
        else if (AppPlatform.is_WECHAT_GAME_custom()) //VIVO 小游戏
 | 
						|
        {
 | 
						|
            return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().vivocfg_custom.vivoversions_custom;
 | 
						|
        }
 | 
						|
        // else if (AppPlatform.is_BD_GAME_custom())//百度小游戏
 | 
						|
        // {
 | 
						|
        //     return cur === AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().bdcfg_custom.version_custom;
 | 
						|
        // }
 | 
						|
        else {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |