처음으로 SVG (Raphael 라이브러리 사용)를 가지고 놀면서, 나는 이라는 완전히 같은 방식으로 캔버스에 동적 요소를 배치 할 때 문제가 발생했습니다.이 포함되어 있습니다. 캔버스. 제가하려는 것은 무작위로 위치입니다. n 단어/짧은 어구입니다. SVG 요소 위치 지정
- 은 처음에 아무 불투명도 점
0,0
에서 텍스트를 작성 : 텍스트 변수이기 때문에는, 위치뿐만 아니라 내가 뭘하는지입니다 변수가 될 필요가있다.
text.getBBox().width
을 사용하여 그려진 텍스트 요소의 너비를 확인하십시오.- 새
x
좌표를Math.random() * (canvas_width - (text_width/2) - pad)
으로 설정하십시오. x
텍스트의 좌표를 새로 설정 한 값 (text.attr('x', x)
)으로 변경합니다.- 내 수학 통찰력에 한계가 있음을 인정하는 첫번째 일 1
에 텍스트의 불투명도 속성을 것입니다 설정하지만, 이것은 매우 간단 보인다. 어쨌든, 나는 여전히 캔버스의 오른쪽 가장자리를 벗어나는 텍스트로 끝납니다. 위의 단순화를 위해, Math.random()
결과에 추가하여 최소 x
값을 설정하는 비트를 제거했습니다. 그것은 거기에, 그리고 나는 캔버스의 최첨단에 동일한 문제를 참조하십시오.
Math.random()
비트는 0과 1 사이의 숫자를 생성하고 일부 숫자는 곱해질 수 있습니다 (내 경우 캔버스 너비 - 텍스트 너비의 절반 - 일부 임의의 패딩)을 사용하여 외부 바운드를 가져옵니다. 격자의 위치가 가운데에 설정되어 있기 때문에 텍스트의 너비를 절반으로 나눕니다.
나는 내가 너무 오랫동안이 쳐다 봤는데 희망,하지만 내 수학 그 녹슨 또는 나는이 솔루션의 후드의 Math.random()
, SVG, 텍스트 또는 다른 어떤의 행동에 대해 뭔가 오해하고 ?
미안 해요. 제가 삭제되었거나 삭제되지 않은 해결책이 있다고 생각했지만, 이전에했던 것에 수학이 적용되었다는 것을 깨달았습니다. 나는 Raphael이 무엇을하고 있는지 알지 못하므로 정말 도움이되지 않습니다. –
문제 없습니다. 그래도 옳은 길에있을 수 있습니다. 'Math.random() '이 어떻게 작동하고 2로 나눈 것이 결국 결국 범인이되었는지도 자세히 살펴보십시오. 그것이 성공하면 후속 조치를 취할 것입니다. –