2013-02-07 6 views
1

빠른 질문입니다. 저는 JavaScript를 처음 접했고, 틀림없이이 프로젝트에서 많은 것을 배울 것입니다. 그래서 나는 어리석은 질문 일 수있다. 내 질문은 다음과 같다.자바 스크립트 동적 다이어그램

Raphael이나 Joint.js 둘 다에서 동적으로 모양을 생성하는 웹 응용 프로그램을 만들 계획이다.

var erd = Joint.dia.erd; 
Joint.paper("world", 800, 250); 

var e1 = erd.Entity.create({ 
    rect: { 
     x: 220, 
     y: 70, 
     width: 100, 
     height: 60 
    }, 
    label: "Entity" 
}); 

그래서, ': 그래서 여기 내 질문을 강화하기 위해 몇 가지 코드입니다 - 동적 나는 사용자가 예를 들어, 그들이 그리는하고자하는 객체의 크기를 입력 할 때까지 객체의 정의되지 않은 금액을 그릴 수있을 것입니다 의미 직사각형 유형의 객체를 만들었지 만 여기에 내가 알고 싶은 것이 있습니다.이 작업을 수행 할 수 있습니까?

var erd = Joint.dia.erd; 
Joint.paper("world", 800, 250); 
int x, y; 
for (int i = 0; i < numOfUserDefObjects; i++) { 
    var e1 = erd.Entity.create({ 
     rect: { 
      x: x, 
      y: y, 
      width: 100, 
      height: 60 
     }, 
     label: "Entity" 
     x + 20; 
     y - 40; 
    }); 
} 

모든 퍼즐은 내가 무엇입니까, var e1입니다. 생성 할 객체가 2 개있는 경우 두 번째 객체를 만들 때 루프가 두 번째 반복을 반복 할 때마다 루프에서 작성된 첫 번째 객체가 내 SVG/Canvas에서 지워지거나 삭제되거나 덮어 쓰기됩니까?

이것에 대한 약간의 통찰력은 크게 감사하겠습니다! 다시 말하지만, 자바 스크립트 경험이 부족하지만 그것이 바뀔 것입니다.

감사합니다.

답변

2

자바 스크립트에서 var으로 선언 된 지역 변수에는 기능 범위가 있습니다. 즉, 함수 당 하나의 로컬 변수 사본이 정확히 있음을 의미합니다. 따라서 두 번째 코드 블록에는 변수 e1의 복사본이 하나만 있으며 for 루프는 반복 할 때마다 다른 값을 할당합니다.

당신이하고있는 일을 할 수는 있지만, 수행 한 후에 e1은 하나의 값만 가지며 그 값은 for 루프의 마지막 반복이 무엇이든간에됩니다.

var erd = Joint.dia.erd; 
Joint.paper("world", 800, 250); 
var x = 0, y = 0; 
var objs = []; 
for (var i = 0; i < numOfUserDefObjects; i++) { 
    objs.push(erd.Entity.create({ 
     rect: { 
      x: x, 
      y: y, 
      width: 100, 
      height: 60 
     }, 
     label: "Entity" 
    })); 
    x += 20; 
    y -= 40; 
} 
// objs now contains an array of the created objects 

참고 : 나는 또한, x와 y를 초기화 고정 당신이 달성하기 위해 노력하고 정확히 모르겠지만, 당신은이처럼 객체의 배열을 만들 수

선언은 int 대신 var을 사용하고 for 루프에서 올바르게 증가 및 감소하는 x 및 y를 사용합니다. 게시 한 코드에 구문 오류가 많이 있습니다.

+0

아, 네가 지금 당장 응용 프로그램을 만들려고 왔을 때 나는 이것들을 보았을 것이다. 나는 내 마음 속에서 나의 접근 방식을 계획하고 있고,이 질문을 선제 적으로 물어서 내가 나를 넘어 뜨리지 않도록하려고했다. 가까운 장래에, 그러나 명확하고 간결한 응답을 당신을 감사하십시오. – Nate