Ich versuche eine Animation in Canvas zu implementieren, so etwas wie ein Fan. Wenn Sie auf einen Pfad klicken, sollte dies fast 70% des Bildschirms gehen, der zweite und dritte Pfad sollte 15% der Breite gehen.Glatte Klick-Event-Animation auf Leinwand
Hier ist mein Code:
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
var el1 = {
lineWidth: 1,
fill: "blue",
points: []
};
var el2 = {
lineWidth:1,
fill: 'red',
points: []
}
var el3 = {
lineWidth:1,
fill:'green',
points:[]
}
var paths = [];
paths.push(el1);
paths.push(el2);
paths.push(el3);
newPoint(50, 50, el1);
newPoint(100, 20, el1);
newPoint(100,180,el1);
newPoint(50,50,el2);
newPoint(90, 155,el2);
newPoint(0, 165, el2);
newPoint(50,50,el3);
newPoint(0, 165, el3);
newPoint(0,20, el3);
draw();
function newPoint(x, y, path) {
path.points.push({
x: x,
y: y
});
}
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (p = 0; p < paths.length; p++) {
var path = paths[p];
ctx.beginPath();
ctx.moveTo(path.points[0].x, path.points[0].y);
for (pt = 1; pt < path.points.length; pt++) {
var point = path.points[pt];
ctx.lineTo(point.x, point.y);
}
//
ctx.fillStyle = path.fill;
ctx.lineWidth = path.lineWidth;
ctx.fill();
}
}
$('#redraw').click(function(){
paths[0].points[2].y = 300;
paths[1].points[1].y = 300;
draw();
});
https://jsfiddle.net/kaggqf94/4/
Ich bin nicht sicher, ob dies der beste Weg ist, um diese Animation zu implementieren (anstelle dieser Dreiecke werden einige Elemente mit Text und Bildern sein), Ich kann nicht herausfinden, wie ich die Animation langsamer machen sollte, ich denke, ich werde den gesamten Code dafür ändern müssen.
Jeder Rat wird helfen, danke!
Danke für Ihre Hilfe, ich kann akzeptieren Ihre Antwort nicht, weil ich nicht mehr als 15 Ruf. :(Das Klickereignis sollte durch Berechnung von: Leinwandbreite und Elementbreite erfolgen, dann animiere das richtige Element, stimmt das? – codetheweb
Deine Pfade sind tatsächlich Keile (wie Teile eines Kuchens) und hier ist ein [Q & A] (http: //stackoverflow.com/questions/29034251/how-do-i-bind-onclick-event-to-piechart-segment/29040839#29040839) zeigt, wie Sie die Maus innerhalb eines Keils verfolgen können. BTW, Sie können eine Antwort an akzeptieren jedes Ansehensniveau (indem du auf das Häkchen klickst, bis es grün wird) Du hast Recht, dass du nicht updaten kannst, bis du mehr Ansehen bekommst (indem du auf das Dreieck klickst, bis es gold wird) Viel Glück mit deinem Projekt! – markE