誰かがこれを私に説明できますか?Javascriptで完全に作成される前に変数を使用しているようですが、これは機能します - なぜですか?
var diagramImage = new Kinetic.Shape(function() {
var context = this.getContext();
context.beginPath();
context.lineWidth = 1;
//This is crazy tricks. It's part of the KineticJS demo website, but how am I able to assign diagramImage.color here?
context.strokeStyle = diagramImage.color;
var lastVertice = polygon.Vertices[polygon.Vertices.length - 1];
context.moveTo(lastVertice.X, lastVertice.Y);
for (var i = 0; i < polygon.Vertices.length; i++) {
var vertice = polygon.Vertices[i];
context.lineTo(vertice.X, vertice.Y);
}
context.stroke();
context.closePath();
});
diagramImage
はキネティックコンストラクタ戻るまで存在していないように私には思えるが、私はできる午前(とする必要があるように見える)コンテキストのstrokeStyle
のdiagramImage
に色割り当てる - diagramImage
が作成される前に?なぜこれは機能しますか?
EDIT:フルコード:
function DrawPolygon(diagramLayer, polygon) {
var diagramImage = new Kinetic.Shape(function() {
var context = this.getContext();
context.beginPath();
context.lineWidth = 2;
//This is crazy tricks. It's part of the KineticJS demo website, but how am I able to assign diagramImage.color here?
context.strokeStyle = diagramImage.color;
var lastVertice = polygon.Vertices[polygon.Vertices.length - 1];
context.moveTo(lastVertice.X, lastVertice.Y);
for (var i = 0; i < polygon.Vertices.length; i++) {
var vertice = polygon.Vertices[i];
context.lineTo(vertice.X, vertice.Y);
}
context.stroke();
context.closePath();
});
diagramImage.color = "red";
diagramImage.on("mouseover", function() {
this.color = "green";
diagramLayer.draw();
});
diagramImage.on("mouseout", function() {
this.color = "red";
diagramLayer.draw();
});
diagramLayer.add(diagramImage);
planViewStage.add(diagramLayer);
}
あなたが含むこのコード部分の前に 'diagramImage'が既に定義されていますか? – ziesemer
いいえこのチュートリアルを参照してください:http://www.html5canvastutorials.com/labs/html5-canvas-interactive-flower/変数 'center'で同じことを行います –
あなたが投稿できる追加コードはありますか?あなたの主張? – shanabus