3
내 데모는 여기 http://jsfiddle.net/akuma/7NmXw/1/KineticJS 마우스 위치는 파란색 상자에 무언가를 그리는
- 우선이다 회전.
- 그런 다음 회전 버튼을 한 번 클릭하십시오.
- 상자를 회전 한 후에 다시 무언가를 그립니다.
- 마침내 그 poisitoin은 틀렸다.
어떻게 고칠 수 있습니까? 감사합니다.
코드 :
이var stage = new Kinetic.Stage({
container: 'container',
width: 500,
height: 500
});
var layer = new Kinetic.Layer({
width: 400,
height: 400
});
var rect = new Kinetic.Rect({
x: 0,
y: 0,
width: 400,
height: 300,
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 5
});
layer.add(rect);
stage.add(layer);
$(document).on('click', '#rotateBtn', function() {
var w = layer.getWidth(),
h = layer.getHeight();
layer.setOffset(w/2, h/2);
layer.setPosition(w/2, h/2);
layer.rotateDeg(90);
layer.draw();
});
var points = [],
drawing = false;
stage.on('mousedown', function() {
drawing = true;
var pos = stage.getMousePosition();
points.push([pos.x, pos.y]);
var line = new Kinetic.Line({
id: 'line',
points: [
[pos.x, pos.y],
[pos.x + 1, pos.y + 1]
],
stroke: 'white',
strokeWidth: 5,
lineCap: 'round',
lineJoin: 'round'
});
layer.add(line);
layer.drawScene();
});
stage.on('mousemove', function() {
if (!drawing) {
return;
}
// Remove previous line
layer.get('#line').remove();
var pos = stage.getMousePosition();
points.push([pos.x, pos.y]);
// Redraw line
var line = new Kinetic.Line({
id: 'line',
points: points,
stroke: 'white',
strokeWidth: 5,
lineCap: 'round',
lineJoin: 'round'
});
layer.add(line);
layer.drawScene();
});
stage.on('mouseup', function() {
drawing = false;
points = [];
});
감사합니다 :
는 다음 코드와 바이올린의 "기존 라인을 재활용! 이것은 매우 효과적입니다. 이전에 line.setPoints (포인트)를 사용했지만 도면이 약간 지연됩니다. 나는 이유를 모른다. – akuma