【发布时间】:2013-12-05 19:21:32
【问题描述】:
我拔掉了大部分头发,试图找到解决办法,但无济于事。 我知道这一定很容易,但作为一个 javascript 新手,我似乎无法理解它,希望有人能帮助我!!!
我正在尝试创建一个简单的画布元素,它上面有一个带有文本(带环绕)的图像。文本将来自画布外部的文本字段(没什么花哨的)。我已经看到画布在哪里填充了文本,因为它被输入到我正在寻找的文本字段中(没有提交按钮)。最终,我将需要添加 2 个具有不同信息的额外文本字段,做同样的事情,但现在我很乐意让一个工作!
如果我能弄清楚如何从常规文本输入字段中提取“复杂文本”而不是硬编码,那么在此处找到的动态文本教程(http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-text-tutorial/ - 代码如下)将是完美的!
任何帮助将不胜感激!
没有输入文本字段的工作代码:
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.4.min.js"></script>
<script defer="defer">
var stage = new Kinetic.Stage({
container: 'container',
width: 578,
height: 220
});
var layer = new Kinetic.Layer();
var simpleText = new Kinetic.Text({
x: stage.getWidth() / 2,
y: 15,
text: 'Simple Text',
fontSize: 30,
fontFamily: 'Calibri',
fill: 'green'
});
// to align text in the middle of the screen, we can set the
// shape offset to the center of the text shape after instantiating it
simpleText.setOffset({
x: simpleText.getWidth() / 2
});
// since this text is inside of a defined area, we can center it using
// align: 'center'
var complexText = new Kinetic.Text({
x: 100,
y: 60,
text: 'COMPLEX TEXT\n\nAll the world\'s a stage, and all the men and women merely players. They have their exits and their entrances.',
fontSize: 18,
fontFamily: 'Calibri',
fill: '#555',
width: 380,
padding: 20,
align: 'center'
});
var rect = new Kinetic.Rect({
x: 100,
y: 60,
stroke: '#555',
strokeWidth: 5,
fill: '#ddd',
width: 380,
height: complexText.getHeight(),
shadowColor: 'black',
shadowBlur: 10,
shadowOffset: [10, 10],
shadowOpacity: 0.2,
cornerRadius: 10
});
// add the shapes to the layer
layer.add(simpleText);
layer.add(rect);
layer.add(complexText);
stage.add(layer);
</script>
</body>
</html>
【问题讨论】:
标签: javascript canvas kineticjs