如何使用paperjs平移

时间:2015-09-12 14:52:53

标签: paperjs

我一直试图弄清楚如何使用onMouseDrag和paperjs中的onMouseDown进行平移/缩放。
我见过的唯一参考是coffescript,并没有使用paperjs工具。

3 个答案:

答案 0 :(得分:3)

这比我应该弄清楚的时间要长。

var toolZoomIn = new paper.Tool();
toolZoomIn.onMouseDrag = function (event) {
    var a = event.downPoint.subtract(event.point);
    a = a.add(paper.view.center);
    paper.view.center = a;
}

答案 1 :(得分:1)

你可以更多地简化Sam P的方法:

#include <stdio.h>
#include <stdlib.h>

static char* copy_and_reverse(char* a);

static int strlen(char *c); // self-implemented

int main(void) {

    char *a = "some string";

    char *b = copy_and_reverse(a);

    printf("%s", b);

    free(b);

    return 0;
}


static char* copy_and_reverse(char* a) {

    int n = strlen(a);

    char *b = new char[n * 2 + 1]; // get twice the length of a and one more for \0

    for (int i = 0; i < n; ++i) { // does copying and reversing
        b[i] = a[i];
        b[i+n] = a[n-i-1];
    }

    b[2 * n] = '\0'; // null out last one

    return b;
}

static int strlen(char *c) {
    char *s = c;
    while( *s++ );

    return s-c-1;
}

事件对象已经有一个名为downPoint的起点的变量。

我已经快速组合sketch进行测试。

答案 2 :(得分:0)

不幸的是,当您更改视图变换时,您不能依靠 event.downPoint 来获得前一点。您必须自己将其保存在视图坐标中(如 Paper.js 开发人员 Jürg Lehni here 所指出的那样)。

这是一个有效的版本(也在 this sketch 中):

let oldPointViewCoords;

function onMouseDown(e) {
    oldPointViewCoords = view.projectToView(e.point);
}

function onMouseDrag(e) {
    const delta = e.point.subtract(view.viewToProject(oldPointViewCoords));
    oldPointViewCoords = view.projectToView(e.point);
    view.translate(delta);
}

view.translate(view.center);
new Path.Circle({radius: 100, fillColor: 'red'});