我最終解決了這個問題,使用一個單獨的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