2013-06-04 2 views
1

paperJS를 사용하여 원을 만들었으므로 작성한 원에 실행 취소 옵션을 적용 할 것입니다. 그래서 내가 어떻게 배열에 Point {x: 537, y: 157} (이것은 paperjs에 event.point입니다) 저장할 수 있습니다. 도움이 필요해.PaperJS 다차원 배열

+0

당신은 당신을 의미 그것을 복제해야합니까? – Bergi

+0

예를 들어 내가 3 개의 원을 그리면 두 번째 원을 삭제해야한다고 가정합니다. 내가 어떻게 할 수 있니? 이 배열을 배열 오른쪽에 저장하는 것만으로 가능합니다. – chiyango

+0

@Devan 만약 그 점이 객체라면, 네가 그것들을 배열로 유지할 수있다. Object 값이 Object에 대한 참조 일 뿐이므로 여러 Array에 같은 Point를 유지할 수 있습니다. –

답변

2

항목을 화면에서 제거하려면 항목을 만들 때 활성화 된 모든 배열의 children 배열에 여전히 저장되므로 배열에서 항목을 제거하는 것처럼 간단하지 않습니다 (project.activeLayer 레이어를 변경하지 않았습니다.)

다음 코드는 배열에서 두 번째 원을 스플 라이스 배열에 저장합니다, 다른 색상의 세 개의 원을 생성하고, 마지막으로보기 (jsbin here)에서 제거 :

<html> 
<head> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
    <script type="text/javascript" src="https://raw.github.com/paperjs/paper.js/master/dist/paper.js"></script> 
    <script type="text/paperscript" canvas="p"> 
    var circleArray = []; 
    circleArray.push(new Path.Circle({ 
     center: [20, 20], 
     radius: 10, 
     strokeColor: 'red' 
     })); 
    circleArray.push(new Path.Circle({ 
     center: [30, 30], 
     radius: 10, 
     strokeColor: 'green' 
     })); 
    circleArray.push(new Path.Circle({ 
     center: [40, 40], 
     radius: 10, 
     strokeColor: 'blue' 
     })); 
    var idOfItemToRemove = 1; 
    var numberOfItemsToRemove = 1; 
    var removeItems = circleArray.splice(idOfItemToRemove, numberOfItemsToRemove); 
    for (var i = 0; i < removeItems.length; i++) { 
     removeItems[i].remove(); 
    } 
    </script> 
</head> 
<body> 
    <canvas id="p" resize></canvas> 
</body> 
</html> 
+1

빈은 http://sketch.paperjs.org/#S/pZA9T8MwEIb/yslLHTWK0o8phQF1YgIBW5rBda6NVceuzk4RqvLfcT6GgDpU4O2e13qf012ZETWyjL2f0MuKxUzaspsvgkAqkhqfiMQXPEJebHZmgpJz4ypu8BNeha+SbZ/w685AeBKNR8ogX6YxLNMiHjCJUjUug0U6AufJnnBrtQ2fZ4TlbOBtFP3Ftgq21b22IyGa//nWwbe+17fXDf7QdTdW5cvh2WP9Yd+wthcMh16MkWnqPdIQuxs59aBPA53u7s5aSeS/u+Pbld0qB0vAVahJN6DgYdqdaDRHXwU+n0cwXmCS56pIhpF3TS1rvwE (더 이상 작동하지 않는 것 =) – Christoph