我希望我还没有晚发这个我制作的代码片段。我和你们一样遇到了处理这种任务的问题。自从我尝试了许多解决方法来模拟fabricjs框架处理图像和对象的能力以来已经过去了3天。虽然我可以使用Fabricjs,但似乎Kineticjs更快/更一致地处理html5。
幸运的是,我们已经有现有的插件/工具,我们可以很容易地与kineticjs一起实现,这就是jQuery Transform工具。非常感谢作者!只需在Google上搜索并下载即可。
我希望我创建的下面的代码将帮助许多开发人员解决这种任务。
$(function() {
var _stage = null;
var _layer = null;
var simpleText = null;
_stage = new Kinetic.Stage({
container: 'canvas',
width: 640,
height: 480
});
_layer = new Kinetic.Layer();
simpleText = new Kinetic.Text({
x: 60,
y: 55,
text: 'Simple Text',
fontSize: 30,
fontFamily: 'Calbiri',
draggable: false,
name:'objectInCanvas',
id:'objectCanvas',
fill: 'green'
});
_layer.add(simpleText);
_stage.add(_layer);
_stage.draw();
_stage.on('click', function(evt) {
removeTransformToolSelection();
ishape = evt.targetNode;
$(ishape).transformTool('show');
ishape.getParent().moveToTop();
_layer.draw();
});
function removeTransformToolSelection(){
$.each(_stage.find('.objectInCanvas'), function( i, child ) {
$(child).transformTool('hide');
});
}
function handleFileSelect(evt) {
removeTransformToolSelection();
var imageObj = new Image();
imageObj.onload = function() {
var myImage = new Kinetic.Image({
x: 0,
y: 0,
image: imageObj,
name:'objectInCanvas',
draggable:false,
id:'id_'
});
_layer.add(myImage);
$(myImage).transformTool();
_layer.draw();
}
var f = document.getElementById('files').files[0];
var name = f.name;
var url = window.URL;
var src = url.createObjectURL(f);
imageObj.src = src;
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
});