-1
我與Paper.js工作,我試圖建立「選擇 - 通過交叉點」Paper.js忽略圖像選擇
在闡述我的意思是,用戶繪製選擇矩形以及其輪廓相交的項目或者選擇矩形中的任意點都被選中。
現在一切都很好,路的項目,但光柵圖像帶來的問題:
是他們的一種方法要麼忽略在選擇光柵圖像或使其以某種方式與光柵工作(如果是的,我會欣賞一個簡單的答案,否則我將無法實現它,業餘和所有)。
隨着我當前的代碼Chrome的回報:遺漏的類型錯誤:無法讀取的不確定
財產「長度」這是迄今爲止代碼:
// Returns path points which are contained in the rect.
function getSegmentsInRect(rect) {
var segments = [];
function checkPathItem(item) {
if (item._locked || !item._visible || item._guide)
return;
var children = item.children;
if (!rect.intersects(item.bounds))
return;
if (item instanceof paper.Path) {
for (var i = 0; i < item.segments.length; i++) {
if (rect.contains(item.segments[i].point))
segments.push(item.segments[i]);
}
} else {
for (var j = children.length-1; j >= 0; j--)
checkPathItem(children[j]);
}
}
for (var i = paper.project.layers.length - 1; i >= 0; i--) {
checkPathItem(paper.project.layers[i]);
}
return segments;
}
// Returns all items intersecting the rect.
// Note: only the item outlines are tested.
function getPathsIntersectingRect(rect) {
var paths = [];
var boundingRect = new paper.Path.Rectangle(rect);
function checkPathItem(item) {
var children = item.children;
if (item.equals(boundingRect))
return;
if (!rect.intersects(item.bounds))
return;
if (item instanceof paper.PathItem) {
if (rect.contains(item.bounds)) {
paths.push(item);
return;
}
var isects = boundingRect.getIntersections(item);
if (isects.length > 0)
paths.push(item);
} else {
for (var j = children.length-1; j >= 0; j--)
checkPathItem(children[j]);
}
}
for (var i = 0, l = paper.project.layers.length; i < l; i++) {
var layer = paper.project.layers[i];
checkPathItem(layer);
}
boundingRect.remove();
return paths;
}
// Returns bounding box of all selected items.
function getSelectionBounds() {
var bounds = null;
var selected = paper.project.selectedItems;
for (var i = 0; i < selected.length; i++) {
if (bounds == null)
bounds = selected[i].bounds.clone();
else
bounds = bounds.unite(selected[i].bounds);
這就是我如何定義我的光柵
function placeImage() {
var raster = new paper.Raster('mona');
raster.addChild;
raster.position = paper.view.center;
raster.selected = true;
raster.index = 0;
}