我在图像上绘制了一个多边形,我想用鼠标点击它移动它,我有这个错误,我不能做它们请你有一个想法。对于这个问题,我使用了librairie Two.js而我不能那样做
$scope.DrawPolygon = function (id, json)
{
var elem = document.getElementById('ImgCamera' + id);
if (elem != null)
{
elem.innerHTML = "";
var two = new Two({
type: Two.Types.canvas,
fullscreen: false,
width: 640,
height: 480,
}).appendTo(elem);
var canvas = two.renderer.domElement;
var img = $scope.spotCAMImageLoaded[_GetCameraNumberFromPolygonNumber(id)];
var texture = new Two.Texture(img, function () { });
var rect = two.makeRectangle(canvas.width / 2, canvas.height / 2, canvas.width, canvas.height);
rect.fill = texture;
rect.noStroke();
var jsonPoly = null;
var camera = json.Camera2;
if (_GetCameraNumberFromPolygonNumber(id) == 0)
camera = json.Camera1;
if (camera != null)
{
jsonPoly = camera[_GetPolygonNumberFromCameraNumber(id)];
var polygon = two.makePath([new Two.Anchor(jsonPoly.P1.x, jsonPoly.P1.y)
, new Two.Anchor(jsonPoly.P2.x, jsonPoly.P2.y)
, new Two.Anchor(jsonPoly.P3.x, jsonPoly.P3.y)
, new Two.Anchor(jsonPoly.P4.x, jsonPoly.P4.y)])
polygon.fill = "#008bbe";
polygon.opacity = 0.5;
polygon.stroke = "#00435c";
polygon.linewidth = 10;
polygon.renderer.elem.style.cursor = 'pointer';
two.update();
}
}
答案 0 :(得分:0)
不熟悉Two.js
并且您没有发布任何DOM结构,但此功能中有很多内容。考虑将其分解为更小的功能。同时使用尽可能多的angularjs
DSL,例如:
angular.element(<selector)
代替document.<selectorMethod>
if(elem)
的真实检查,0
null
或undefined
的值将被防范,camera
支票答案 1 :(得分:0)
不幸的是,undefined
和null
在JavaScript中是不同的值。
在第一条语句中,document.getElementById('ImgCamera' + id)
返回undefined
。
尝试将第一个if语句更改为此:
if (elem != undefined && != null) {