캔버스는 수동 요소이기 때문에 (픽셀 버퍼가 아닌 다른 내용은 알지 못합니다) 버튼 논리를 직접 구현해야합니다.
일반 HTML (5) 및 CSS3 (슬라이드 효과 등을 만드는 데 사용할 수있는 애니메이션을 지원)을 사용하는 것이 좋습니다.
for(; b = buttons[i]; i++)
ctx.rect(b[0], b[1], b[2], b[3]);
/// simple buttons in this example..
ctx.fillStyle = '#F90';
ctx.fill();
: 버튼을 렌더링
var buttons = [
[10, 10, 50, 30],
[70, 10, 50, 30],
[130, 10, 50, 30]
];
:
버튼 영역을 정의 - 당신은 캔버스 요청으로
그러나, 여기 당신은 여러분의 필요에 채택 할 수있는 버튼을 클릭 감지에 대한 예입니다
이제 클릭 콜백을 사용할 수 있습니다 (또는 마우스 다운시 색상을 변경하려면 onmousedown/up 콜백을 사용하십시오) :
canvas.onclick = function(e) {
/// adjust mouse position to relative to canvas:
var r = canvas.getBoundingClientRect(),
x = e.clientX - r.left,
y = e.clientY - r.top,
i = 0, b;
/// check if x/y is within any of the buttons
for(; b = buttons[i]; i++) {
if (x > b[0] && x < b[0] + b[2] &&
y > b[1] && y < b[1] + b[3]) {
/// we got a hit - handle button
alert('Button ' + i + ' was clicked!');
return;
}
}
}
Here is an online demo.
출처
2013-08-27 07:04:07
K3N
Photoshop으로 비디오 게임을 만들 수 있는지 묻는 것과 같습니다. 글쎄요, 그렇습니다. 그러나 그것은 더 큰 퍼즐의 한 조각 일뿐입니다. –
내 [** 캔버스 GUI **] (http://cssdeck.com/labs/ebmkdf4p)가 도움이 될 것입니다. 내가 가지고있는 대부분의 것이 당신의 경우에 반출 될 수 있습니다. –