31.08.2015, 08:53
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
canvas и текст в изображение по клику
Люди, помогите вот с этой фишкой http://stackoverflow.com/a/18549573
На jsfiddle все работает, но когда скачиваю, подключаю jquery - не фурычит что-то. Кто-нибудь скиньте готовый html-код если тот у вас тоже не работает. Спасибо.
Что я делаю не так?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Prototype</title>
<script src="https://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.6.0.min.js"></script>
<style type="text/css">
#container {
border:solid 1px #ccc;
margin-top: 10px;
width:300px;
height:300px;
}
</style>
<script type="text/javascript">
var stage = new Kinetic.Stage({
container: 'container',
width: 300,
height: 300
});
var layer = new Kinetic.Layer();
stage.add(layer);
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 = "https://dl.dropboxusercontent.com/u/139992952/stackoverflow/KoolAidMan.png";
$("#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();
});
</script>
</head>
<body>
<input id="newtext" type="text" value="Hello!">
<button id="addbutton">Any this text</button>
<h2>The added text is draggable</h2>
<div id="container"></div>
</body></html>
Последний раз редактировалось MRJ, 31.08.2015 в 09:13.
|
|
31.08.2015, 09:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
MRJ,
вы что нибудь про готовность страницы слышали или читали ? типа $.ready или window.onload или строка 81
|
|
31.08.2015, 09:38
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
я-то тут не причем) код брал оттуда) 81 съехала, каюсь) а что в нем не так? просто я нуб в js))
|
|
31.08.2015, 09:43
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
Так ?
$(window).load(function(){
о, фурычит теперь )
|
|
31.08.2015, 09:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
MRJ,
Сообщение от рони
|
строка 81
|
скрипт можно перенести, поставить перед body, страница к этому моменту уже загрузится (DOM, html)
|
|
31.08.2015, 17:24
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
все решено
Последний раз редактировалось MRJ, 31.08.2015 в 17:51.
|
|
01.09.2015, 05:24
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
Кто знает, он отрисовывает только png? У меня генерируется png даже если исходник стоит jpg. Кто-нибудь знает как изменить?
|
|
01.09.2015, 06:53
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от MRJ
|
Кто знает, он отрисовывает только png?
|
PNG, JPEG - это форматы для хранения, а canvas работает с распакованным из формата изображением, которое ни png, ни jpeg, ни что другое, это сырец. А вот получить его на выходе можно уже в формате для хранения, в canvas всего два - jpeg и png по умолчанию. Нужно jpg, тогда, например, canvas.toDataURL('image/jpeg').
|
|
01.09.2015, 07:27
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
laimas,
А как это прописать здесь??? Изображение вставляется не в canvas а в обычном div все рисуется.. Пробовал ничего не получается (
<script type="text/javascript">
//<![CDATA[
$(window).load(function(){
var stage = new Kinetic.Stage({
container: 'container',
width: 500,
height: 400
});
var layer = new Kinetic.Layer();
stage.add(layer);
var image = new Image();
image.onload = function () {
var image1 = new Kinetic.Image({
x: 0,
y: 0,
width: 0,
height: 0,
image: image,
});
layer.add(image1);
layer.draw();
}
image.src = "/images/top3d.jpg";
$("#addbutton").click(function () {
// simple label
var label = new Kinetic.Label({
x: 15,
y: 10,
draggable: false
});
label.add(new Kinetic.Text({
text: $("#newtext").val(),
fontFamily: 'Georgia',
fontSize: 34,
padding: 10,
fill: 'white'
}));
layer.add(label);
layer.draw();
});
});//]]>
</script>
|
|
01.09.2015, 07:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от MRJ
|
Изображение вставляется не в canvas а в обычном div все рисуется..
|
И какие тогда проблемы? В этом случае бы будь у вас хоть GIF, в вашем div этот формат был бы и вставлен.
Судя по параметрам, Kinetic отрисовывает изображение, вставляет в него текст (?), и еще что-то, я не в курсе чего, а сделать это он может только используя canvas. Открывайте исходный код Kinetic, ищите в нем где возвращается изображение, и указывайте нужный вам формат.
|
|
|
|