我最终解决了这个问题,使用一个单独的DOM对象在画布上移动。该解决方案还需要PIXI 4中的新交互管理器,它为画布上的任何鼠标移动提供单一回调。
在下面,我假设画布放置在canvasLeft和canvasTop像素与CSS。
$(document.body).append("<div style='position:absolute; display:none; border: 1px solid black' id='tpSelectBox'></div>");
renderer = new PIXI.CanvasRenderer(0, 0, opt);
// setup the mouse zooming callbacks
renderer.plugins.interaction.on('mousedown', function(ev) {
mouseDownX = ev.data.global.x;
mouseDownY = ev.data.global.y; $("#tpSelectBox").css({left:mouseDownX+canvasLeft, top:mouseDownY+canvasTop}).show();
});
renderer.plugins.interaction.on('mousemove', function(ev) {
if (mouseDownX == null)
return;
var x = ev.data.global.x;
var y = ev.data.global.y;
var selectWidth = Math.abs(x - mouseDownX);
var selectHeight = Math.abs(y - mouseDownY);
var minX = Math.min(ev.data.global.x, mouseDownX);
var minY = Math.min(ev.data.global.y, mouseDownY);
var posCss = {
"left":minX+canvasLeft,
"top":minY+canvasTop,
"width":selectWidth,
"height":selectHeight
};
$("#tpSelectBox").css(posCss);
});
renderer.plugins.interaction.on('mouseup', function(ev) {
$("#tpSelectBox").hide();
mouseDownX = null;
mouseDownY = null;
$("#tpSelectBox").css({"width":0, "height":0});
});
对于旧版本的PIXI的,这里是一个没有矩形 https://github.com/Arduinology/Pixi-Pan-and-Zoom/blob/master/js/functions.js 在2015年5月,交互管理器得到了扩展,允许更容易的平移/缩放处理https://github.com/pixijs/pixi.js/issues/1825平移/缩放的例子是什么我在这里使用。
来源
2017-01-10 12:23:23
Max