我有一个关于Dijkstra算法的项目,用画布绘制图形。我在我的html文件的JavaScript中有以下代码。这是JavaScript代码的一部分。
var graph = {};
var i = 0;
function ondblclick(e)
{
var cell = getpos(e)
canvasX = cell.x-10;
canvasY = cell.y-10;
graph = {i: {coord : [cell.x,cell.y]}};
var g_canvas = document.getElementById("canvas");
var context = g_canvas.getContext("2d");
var cat = new Image();
cat.src = "dot1.png";
cat.onload = function()
{
context.drawImage(cat,canvasX , canvasY);
}
}
i = i+1
function submit()
{
for (i = 0; i<= 5; i = i + 1)
alert(graph.i.coord);
}
这里我有一个画布,'ondblclick'是用户双击画布时的功能。 Canvas用于绘制节点和边。 'ondblclick'用于绘制节点。
我的问题是以字典格式将节点的坐标值保存到“图形”。它只接受最后一个值。如何使用变量I和cell.x,cell.y values ??
将所有值更新/追加/扩展到同一个字典答案 0 :(得分:1)
你几乎拥有它。
var graph = [];
function ondblclick(e)
{
var cell = getpos(e)
canvasX = cell.x-10;
canvasY = cell.y-10;
graph.push({coord : [cell.x,cell.y]});
var g_canvas = document.getElementById("canvas");
var context = g_canvas.getContext("2d");
var cat = new Image();
cat.src = "dot1.png";
cat.onload = function()
{
context.drawImage(cat,canvasX , canvasY);
}
}
function submit()
{
for (i = 0; i<= 5; i = i + 1)
alert(graph[i].coord);
}
为了将数据导入graph
,您需要将对象推入数组,然后遍历该数组。你的问题是你错误地使用了i
变量,因此存储(和检索)你的坐标彼此之上。
答案 1 :(得分:0)
字典(键值存储)是图形的错误数据结构。使用可以附加节点的数组。对数组中的每个元素使用字典以保存其中的坐标。