単純なペイントアプリケーションを作成しようとしていますが、行の開始点を指定した後に行をプレビューするようにします。対応するjavascriptは次のようなものです:前のストロークを削除する(一時行を作成する) - Javascript/HTML5
var Edges = new Array();
var Vertecies = new Array();
var Mouse = {x:0, y:0}
function findPos(obj) {
var curleft = 0, curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return { x: curleft, y: curtop };
}
return undefined;
}
function addEdge() {
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var i=0;
var Start = { x:0, y:0}
var End = { x:0, y:0}
var Line = (Start, End);
var temp = new Array();
$("#myCanvas").mousemove(function(e){
console.log("mouse is movin!");
if(i==1)
{
var pos = findPos(this);
console.log("I = 1 AHHHH")
ctx.moveTo(Start.x, Start.y);
ctx.lineTo(e.clientX-pos.x, e.clientY-pos.y);
ctx.stroke();
}
else{
}
})
$("#myCanvas").click(function(event){
var pos = findPos(this);
var x = event.pageX - pos.x;
var y = event.pageY - pos.y;
if (i==0)
{
Start = {x:x,y:y}
i++;
}
else if(i==1) {
End = {x:x,y:y}
ctx.moveTo(Start.x , Start.y);
ctx.lineTo(End.x , End.y);
ctx.stroke();
Line = (Start, End);
Edges.push(Line);
i++;
}
while(i==2) {
Start = {x:0, y:0};
End = {x:0, y:0};
i=0;
}
});
};
これ以外にも、私はmyCanvasという関連キャンバスを持っています。
基本的には、私が再びクリックするまで、その点から私のカーソルに行が移動すると、それは停止し、今はこの山の部分だけ残っています。
クリックした場所から自分のカーソルに移動した後に「一時的な」行を取得し、次に2回目のクリックがある場所に永続的な行を配置する方法はありますか?
クリックすると、2番目のクリック時に最初のblitとblitの上に2番目のtempキャンバスが表示されます。キャンバスを削除して1番目の行を行います。 – r043v
blit? キャンバスをキャンバス内にネストし、マウスを動かすと同様の考えができました。ネストされたキャンバスをクリアしてからクリックすると、そのキャンバスにラインをプッシュします。私はキャンバスをクリアする方法を知らないのですが、私がしても、それはたくさんの記憶を取るように感じます。 – Funkyguy