キネティック レイヤーに円を作成しようとすると、多くの問題が発生します。基本的に私はペイント アプリケーションを作成しようとしていますが、この問題に 1 つずつ取り組む必要があると考えています。だから、文字通り円をドラッグアンドドロップできるようにしたいだけです。私は何かを持っていますが、それが絶対にエラーだらけであることを知っています。KineticJsやjavascriptを長い間使用していないので、これがどのように機能するかを本当に理解したいと思っています。良い一日をありがとう!
<!DOCTYPE html>
<html>
<head>
<meta chartset="utf-8">
<title>Creating a Cirlce</title>
<style type="text/css">
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<script type="text/javascript" src="kinetic-v4.5.4.min.js"></script>
<div id="container"></div>
<script type="text/javascript">
window.onload = function() {
var stage = new Kinectic.Stage({
container: "container",
width: 400,
height: 400
});
var layer = new Kinetic.Layer();
background = new Kinetic.Rect({
x: 0,
y: 0,
width: stage.getWidth(),
height: stage.getHeight(),
fill: "white"
});
var Circle = new Kinetic.Circle({
x: 0,
y: 0,
radius: 0,
fill: "red",
stroke: "black",
strokeWidth: 4
});
layer.add(background);
layer.add(Circle);
stage.add(layer);
var moving = false;
stage.on("mousedown", function(){
if (moving) {
moving = false;
layer.draw();
}
else {
var pos = stage.getMousePosition();
moving = true;
Circle.x = pos.x;
Circle.y = pos.y
Circle.radius = 0;
layer.drawScene();
}
});
stage.on("mousemove", function(){
if (moving) {
var pos = stage.getMousePosition();
var x = pos.x;
var y = pos.y;
Circle.x = pos.x;
Cirlce.y = pos.y;
Cirlce.radius = 0.5 * Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
Cirlce.fill = "red";
Circle.stroke = "black";
Cirlce.strokeWidth = 1;
}
});
stage.on("mouseup", function() {
moving = false;
})
}
</script>
</body>