跳转至

Coord2 二维位置

这是一个客户端API

该API仅在客户端脚本使用

查阅官方文档
查阅社区文档
二维位置
实际计算结果为scale计算结果和offset之和
你可以理解为,先通过scale计算出v,再将voffset相加得到最终结果

构造函数

Coord2(c2: {offset: [], ???3: }): 1

创建一个二维位置

参数 类型 说明
v 一个该二维位置的值
offset [] 该二维位置offset的值,为一个长度为2的数组
??? [] 该二维位置scale的值,为一个长度为2的数组
示例
new Vec2([1, 2]);
new Vec2([255, 255]);
new Vec2([255, 0]);

属性

提示

虽然下面offset[scale](readonly)属性标记为只读,但只是你不能直接给这个属性赋值,你仍然可以使用属性自带的方法赋值或者直接给属性的属性赋值
同时你也不能像服务端那样x = ...;的写法了

offset:
相对于父节点的绝对偏移值,单位为px
scale:
相对于父节点尺寸的缩放量,xy的范围皆为\([0, 1]\)
举个例子,若x = 0.5y = 0.5,那么该节点的位置就在父节点的中心(实际显示还和锚点有关);
x = 0y = 0,那么该节点的位置就在父节点的左上角
x = 1y = 1,那么该节点的位置就在父节点的右下角

方法

create(val?: ):

创建一个二维位置

示例

官方写法,仅限Javascript使用

Vec2.create({x: 1, y: 2})

改进后的写法,可在Typescript中使用

let vec = Vec2.create();
vec.x = 1;
vec.y = 2;
let vec: Vec2 = Vec2.create();
vec.x = 1;
vec.y = 2;

第三方重写

S-C-Link_client中重写的Coord2

需搭配S-C-Link_client中重写的Vector2使用,具体见Vec2 #第三方重写

/**
 * 图像映射中区域的坐标  
 * 值为`offset`(绝对坐标)和`scale`(占父元素空间的百分比)之和
 */
class Coord2 {
    offset = new Vector2(0, 0);
    scale = new Vector2(0, 0);
    constructor(offset, scale = new Vector2(0, 0)) {
        this.offset = offset;
        this.scale = scale;
    }
    /**
     * 设置`offset.x`的值
     * @param {number} value
     */
    set x(value) {
        this.offset.x = value;
    }
    /**
     * 设置`offset.y`的值
     * @param {number} value
     */
    set y(value) {
        this.offset.y = value;
    }
    set(offset, scale) {
        this.offset = offset;
        this.scale = scale;
    }
    copy(c) {
        this.offset = c.offset.clone();
        this.scale = c.scale.clone();
    }
    clone() {
        return new Coord2(this.offset.clone(), this.scale.clone());
    }
    setCoord2(c) {
        this.offset.setVec2(c.offset);
        this.scale.setVec2(c.scale);
    }
    static fromCoord2(c) {
        return new Coord2(Vector2.fromVec2(c.offset), Vector2.fromVec2(c.scale));
    }
}


  1. 根据实际测试推出,以下是推出过程:
    我们尝试使用构造函数创建一个,但不填写任何参数

    new Cooed2()
    
    会得到以下报错:
    TypeError: Cannot read properties of undefined (reading 'offset')
    
    那么就可以判断,的构造函数需要填写一个具有offset属性的对象
    offset又是的属性,即可以推测scale属性也应该包含在参数中
    但事实上并不是,填写scale会得到以下报错:
    TypeError: Cannot read properties of undefined (reading '0')
    
    根据报错,虽然不能推出另一个属性的名称,但也可以推出,offset和这个参数填写的并不是,而是一个[] 

  2. 暂时无法获取其实际参数名,暂时以c代替 

  3. 属性名未知 

评论区