我掏出了大部分头发试图找到无效的解决方案。 我知道这一定很容易,但作为一个javascript新手,我似乎无法绕过它,希望有人可以帮助我!
我试图创建一个简单的画布元素,其上面有一个带有文本(带有包装)的图像。文本将来自画布之外的文本字段(没什么特别的)。我已经看到了画布填充文本的位置,因为它输入到我正在寻找的文本字段中(没有提交按钮)。最后,我需要添加另外两个包含不同信息的文本字段,做同样的事情,但现在我很乐意让一个人上班!
这里找到的动态文本教程(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>
答案 0 :(得分:1)
可能的解决方案:添加一个输入字段,设置事件监听器,触发其值的更改,然后开始绘制。
<body>
<div id="container"></div>
<input type="text" id='complexText' size="20"/>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.4.min.js"></script>
<script defer="defer">
var inputField = document.getElementById('complexText');
inputField.addEventListener('change', function() {
var inputText = this.value;
showText(inputText);
}, false);
function showText(inputText) {
*** here goes all your 'Kinetic' code ***
}
请参阅example at jsBin。