Creator与Laya的Node 操作位置,旋转,缩放,四元数,贝塞尔曲线bezierTo,表示第四个元素(即是复数,就是说在四维空间额能运算),坐标系,Laya.Point()

addChildAt /addChildAt 有Bug, 一般加载不出来。所以一般用 _children[0] 替换,例如
//*********************** ************************ LayaAir 2D ***************************//
//
节点属性的 位置 , 旋转 , 缩放 ***************************//
//位置
ape.x = ape.y =
ape.pos(150, 100);

//旋转
rotation : Number ,ape.rotation += 10; 旋转角度,默认值为0。以角度为单位。 2D项目只有绕着屏幕的法线正负旋 转,不用设置轴向,也没有轴向

//缩放
ape.scale(0.5,0.5)
scaleX : Number ,X轴缩放值,默认值为1。设置为负数,可以实现水平反转效果,比如scaleX=-1。
scaleY : Number ,Y轴缩放值,默认值为1。设置为负数,可以实现垂直反转效果,比如scaleX=-1

//中心点
pivotX : Number ,X轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。
pivotY : Number ,Y轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。

//******************* action的 位置 , 旋转 , 缩放 ***************************//
//位置
Laya.Tween.to()
Tween.to(this.lab_tip, { x: x3 }, 200, null, null, 900)
Tween.from(this.lab_tip, { x: x3 }, 200, null, null, 900)

//旋转 根据触摸 节点 获取旋转的角度
var angle = this.getAngle(this.touchStartPos.x, this.touchStartPos.y, touchLoc.x, touchLoc.y);
getAngle: function (x1, y1, x2, y2) {
var x = Math.abs(x1 - x2);
var y = Math.abs(y1 - y2);
var z = Math.sqrt(x * x + y * y);
var d;
if (x2 < x1 && y2 > y1) {
d = 180 - Math.round((Math.asin(y / z) / Math.PI * 180));
} else if (x2 > x1 && y2 > y1) {
d = Math.round((Math.asin(y / z) / Math.PI * 180));
} else if (x2 > x1 && y2 < y1) {
d = 360 - Math.round((Math.asin(y / z) / Math.PI * 180));
} else if (x2 < x1 && y2 < y1) {
d = 180 + Math.round((Math.asin(y / z) / Math.PI * 180));
}
return d;

},

//********************** 坐标系转换 ****************//
localToGlobal:转换成世界坐标
globalToLocal:转换成相对本地坐标
var newPoint:Point = rect3.localToGlobal(rect3Point);//将rect3上面的一个点的位置转换为相对于舞台上面的位置
var newPoint2:Point = rect1.globalToLocal(newPoint);//将上面得到的点的位置转换成相对于rect1上面的位置

新建点
Laya.Point(20, 20)
var newPoint = new Laya.Point(20, 20)

//缩放

//贝塞尔曲线运动
即:factor从0变化到1 卡牌从起始位置,沿着三个点,圆滑地滑动到下面部分
关键源码:
onEnable(): void {
this.sp.x = this.sp.y = 0;
Laya.Tween.to(this, { factor: 1 }, 2000,Laya.Ease.bounceOut);
}
//添加factor的set,get方法,注意用public
public get factor(): number {
return 0;
}
//起始点(0,0) 中间点 (500,200)目标位置点 (0,500)
public set factor(value: number) {
this.sp.x = (1 - value) * (1 - value) * 0 + 2 * value * (1 - value) * 500 + value * value * 0;
this.sp.y = (1 - value) * (1 - value) * 0 + 2 * value * (1 - value) * 200 + value * value * 500;
}
//https://www.bilibili.com/read/cv5105808/

//**************** 根据点 起点,顶点,终点 模拟 贝塞尔曲线运动 ****************//
let points = []
let point1 = new Laya.Point(logo.x, logo.y) // 起点
let point2 = new Laya.Point(750, 100)//一个顶点 还可以继续添加 点
let point3 = new Laya.Point(100, 1000)//终点

points.push(point1)
points.push(point2)
points.push(point3)
let array = BezierPath.CreateBezierPoints(points, 60)//生成60个点
console.log(“array:”, array)
然后遍历这60个点 效果就出来了
let index = 0
Laya.timer.frameLoop(1, this, function () {
if (index > array.length - 1)
index = 0
console.log(“index:”, index)
console.log(“index:”, array[index])

        ///为了便于观察 这个标记的每个 点的位置
        let log
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值