Вот как добавить указанный пользователем текст на изображении и чтобы текст тащиться
Это решение использует библиотеку canvas KineticJS и jQuery для упрощения задачи.
Вот как это работает:
- Создать кинетический этап (это активизирует HTML холст)
- Создать новый объект изображения в JavaScript (это загружает изображение в объект)
- Создать новый объект Kinetic Image и поместите новое изображение в объект Kinetic Image
- Когда пользователь вводит текст на вход и нажимает кнопку «Добавить» ...
- Создать новый объект Kinetic этикетки с помощью текста пользователя
- Для того, чтобы новый текстовый ярлык перетаскиваемым, просто установите
draggable:true
при создании объекта
Вот код, который делает всю работу ...
Создать Кинетический этап (это активирует HTML холст)
var stage = new Kinetic.Stage({
container: 'container',
width: 300,
height: 300
});
var layer = new Kinetic.Layer();
stage.add(layer);
Создать новый объект изображения в JavaSc НИИИТ (это загружает изображение в объект)
var image = new Image();
image.onload = function(){
// Your image is fully loaded, so…
// Create your kinetic image object here
layer.add(image1);
layer.draw();
}
image.src="koolaidman.png";
Создать новый кинетический объект изображения и поместить новое изображение в кинетическом объекте Image
var image = new Image();
image.onload = function(){
var image1 = new Kinetic.Image({
x: 0,
y: 0,
width: 300,
height: 300,
image: image,
});
layer.add(image1);
layer.draw();
}
image.src = "koolaidman.png";
Когда пользователь вводит текст в ввод и нажимает кнопку «Добавить» ...
<input id="newtext" type="text" value="Hello!">
<button id="addbutton">Add this text</button>
$("#addbutton").click(function(){
// Create your new kinetic text label here
});
Создать новый объект Kinetic этикетки с помощью текста пользователя
$("#addbutton").click(function(){
// Simple label
var label = new Kinetic.Label({
x: 20,
y: 20,
draggable:true
});
label.add(new Kinetic.Tag({
fill: 'green'
}));
label.add(new Kinetic.Text({
text: $("#newtext").val(),
fontFamily: 'Verdana',
fontSize: 18,
padding: 10,
fill: 'white'
}));
layer.add(label);
layer.draw();
});
Для того, чтобы новый текстовый ярлык перетаскиваемым, просто установите draggable:true
при создании объекта
// Snipped from the kinetic label creation above
var label = new Kinetic.Label({
x: 20,
y: 20,
// Set draggable:true to make the kinetic label draggable
draggable:true
});
Вы можете скачать Kinetic библиотеку и подробнее см. примеры в HTML5 Canvas KineticJS Label Tutorial. Вы можете загрузить библиотеку jQuery и узнать больше с примерами здесь, на странице jQuery home page. jQuery - отличная библиотека для устранения несоответствий между браузерами.
Вот код и Fiddle: http://jsfiddle.net/m1erickson/pQYz9/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Prototype</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.6.0.min.js"></script>
<style>
#container{
border:solid 1px #ccc;
margin-top: 10px;
width:300px;
height:300px;
}
</style>
<script>
$(function(){
$("#addbutton").click(function(){
// Simple label
var label = new Kinetic.Label({
x: 20,
y: 20,
draggable:true
});
label.add(new Kinetic.Tag({
fill: 'green'
}));
label.add(new Kinetic.Text({
text: $("#newtext").val(),
fontFamily: 'Verdana',
fontSize: 18,
padding: 10,
fill: 'white'
}));
layer.add(label);
layer.draw();
});
}); // End $(function(){});
</script>
</head>
<body>
<input id="newtext" type="text" value="Hello!">
<button id="addbutton">Add this text</button>
<div id="container"></div>
</body>
</html>
мы можем увидеть некоторый код, чтобы быть в состоянии помочь лучше? –