我想我找到了解決辦法:我從擴大的@freejosh小提琴也有回調的工作(如調整大小):關鍵是要重新獲取的回調函數內的正確範圍:
http://jsfiddle.net/rassoh/mx9n3vsf/7/
var mypapers = [];
initPaper(0, $("#canvas1")[0]);
initPaper(1, $("#canvas2")[0]);
function initPaper(id, canvasElement) {
var mousePosition = new paper.Point(0,0);
mypapers[id] = new paper.PaperScope();
paper = mypapers[id];
paper.setup(canvasElement);
var myCircle;
createCircle = function() {
if("undefined" !== typeof myCircle) {
myCircle.remove();
}
// this function is called on resize, so we have to re-fetch the scope!
paper = mypapers[id];
myCircle = new paper.Path.Circle(30, 30, 20);
var lightRed = new paper.Color(1, 0.5, 0.5);
var lightBlue = new paper.Color(0.5, 0.5, 1);
myCircle.style = {
fillColor: id === 0 ? lightRed : lightBlue,
strokeColor: "black"
};
}
createCircle();
var tool = new paper.Tool();
tool.onMouseMove = function(event) {
mousePosition = event.lastPoint;
};
paper.view.onFrame = function() {
if("undefined" === typeof myCircle) {
return;
}
var dist = mousePosition.subtract(myCircle.position);
dist = dist.divide(3);
myCircle.position = myCircle.position.add(dist);
};
paper.view.onResize = function() {
createCircle();
};
}
$(window).resize(function() {
var width = $(".container").width()/2;
var height = $(".container").height();
// this automatically triggeres paper's onResize event registered above
mypapers[0].view.viewSize = new paper.Size(width, height);
mypapers[1].view.viewSize = new paper.Size(width, height);
});
請注意,我還包括與圈子的簡單交互,以測試其中的正確行爲。
就是這樣!謝謝! – frodo2975
如果您稍後再調用一個調整大小的事件,這不起作用...將嘗試創建一個小提琴 – rassoh
我覺得值得一提的是我使用的模式。它有一個紙張存取器函數,比如'function getPaper(){return window.paper = mypaper; }'這樣你就可以確定每當你使用紙時,全局變量將被適當設置。 –