谁能把cc.jumpTo 写成jumpTo (帧数, position, y, height, jumps) ,返回一个数组,数组长度等于帧数,每一关元素等于一个pos 包括 x,y。

原函数是 cc.jumpTo = function (duration, position, y, height, jumps)

在https://github.com/cocos-creator/engine/blob/master/cocos2d/actions/CCActionInterval.js#L1615

谁能把cc.jumpTo 写成jumpTo (帧数, position, y, height, jumps) ,返回一个数组,数组长度等于帧数,每一关元素等于一个pos 包括 x,y。

只是把duration 改成 帧数,有没有热心人啊??

你是想获取每一贞的位置

是 啊

不能的 兄弟 按照你这么做 1秒后才能返回所有数组 操作有延时 我建议在update里面监控节点的坐标 如果节点多的话 自己得封装一个方法

现在是说自己封装方法啊,原函数没关系,跟延迟也没关系

我看了一下里面的代码,是在update里面更新位置的

我想要这样一个函数,谢谢

哪位友友帮帮忙啊 :smile:

好吗?:sweat_smile:

可以自己写跳跃动作,在update里写。

需要这样一个函数哈,需要一个数组,跟update没关系哈

有没有人,有没有人?

@surevision

bug修正

看了半天也没看出来运动轨迹到底是怎么样的囧,不过既然有源码了,就抄爆吧


    jumpToPoints(frames, startPosition, endPosition, height, jumps) {
        let points = [];
        let delta = cc.Vec2.ZERO;
        delta.x = endPosition.x - startPosition.x;
        delta.y = endPosition.y - startPosition.y;
        for (let frame = 0; frame < frames; frame += 1) {
            // dt = this._computeEaseTime(dt); // 不ease
            var dt = (frame + 1) / frames;
            var frac = dt * jumps % 1.0;
            var y = height * 4 * frac * (1 - frac);
            y += delta.y * dt;
            var x = delta.x * dt;
            var locStartPosition = startPosition;
            x = locStartPosition.x + x;
            y = locStartPosition.y + y;
            points.push(cc.v2(x, y));
        }
        return points;
    },

在 Helloworld 中测试:


    onLoad: function () {
        this.points = this.jumpToPoints(120, 
                this.label.node.getPosition(),
                cc.v2(100, 100),
                100,
                4);
        this.jumpIndex = 0;
    },

    update: function (dt) {
        let pos = this.points[this.jumpIndex];
        if (pos) {
            cc.log(pos.x, pos.y);
            this.jumpIndex += 1;
            this.label.node.x = pos.x;
            this.label.node.y = pos.y;
        }
    },

1赞