javascript - 在 easelJS 中将文本居中放置在矩形内

标签 javascript createjs easeljs

我是 easelJS 的新手。我想创建一个矩形,然后我想在输入框中输入文本。这是我的代码

 function init() {
                    var stage = new createjs.Stage("canvas");
                    var layoutWidth = 0.8 * stage.canvas.width;
                    var layoutHeight = 0.6 * stage.canvas.height;
                    var layoutRect = new createjs.Shape();
                    layoutRect.graphics.beginStroke("black").drawRect((stage.canvas.width - layoutWidth) / 2, (stage.canvas.height - layoutHeight) / 2, layoutWidth, layoutHeight);
                    var button1 = new createjs.Shape();
                    button1.graphics.beginStroke("black").drawRect((stage.canvas.width - layoutWidth) / 2, (stage.canvas.height - layoutHeight) / 2 + 0.90 * layoutHeight, layoutWidth / 2, 0.10 * layoutHeight);
                    var button2 = new createjs.Shape();
                    button2.graphics.beginStroke("black").drawRect((stage.canvas.width - layoutWidth) / 2 + layoutWidth / 2, (stage.canvas.height - layoutHeight) / 2 + 0.90 * layoutHeight, layoutWidth / 2, 0.10 * layoutHeight)
                    var inputText = document.getElementById("input") ;
                    var text = new createjs.Text();
                    text.set({
                    text: inputText.value
                        })
                    stage.addChild(layoutRect, button1, button2,text);
                    stage.update();

                    inputText.onkeyup = function(){
                        text.set({
                        text: inputText.value
                            })
                        stage.update()
                        }
                }

我希望此文本出现在 button1 内并在中心正确对齐。请解释如何做到这一点。谢谢

最佳答案

一些注意事项:

我建议将按钮绘制在 [0, 0],然后移动它,而不是将其内容绘制在屏幕上您想要的位置。

button.graphics.beginStroke("black").drawRect(0, 0, buttonWidth, buttonHeight);

将图形和标签包裹在一个Container中,并改为“button1”,然后将容器移动到你想要它调整图形和标签的地方

var button1 = new createjs.Container();
var bg1 = new createjs.Shape();
var text = new createjs.Text();
button1.addChild(bg1, text);

使用 textAligntextBaseline(均为 HTML Canvas 上下文属性)从中心绘制文本。然后,您可以将它的 xy 位置设置为按钮宽度的一半。

text.set({
  textAlign: "center",
  textBaseline: "middle",
  x: buttonWidth / 2,
  y: buttonHeight / 2
})

您还可以使用 getBounds() 方法测量和定位左上对齐的文本,但居中文本更容易,因为您不必在文本更改时更改它。

我制作了一个尖峰来展示这一点。 http://jsfiddle.net/lannymcnie/cb5tbx5t/

干杯。

关于javascript - 在 easelJS 中将文本居中放置在矩形内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591563/

相关文章:

javascript - 如何使用 TweenJS 和 Easeljs 更改矩形的形状

shadow - Createjs 阴影仅在右侧和底部

javascript - 具有特定尺寸形状的 CreateJS/EaselJS 奇怪性能

javascript - Json使用for循环显示所有数据

javascript - 如何在 promise 之间等待

javascript - TypeError : createjs. Sprite 不是构造函数

javascript - 在 createJS/easelJS 中围绕另一个对象旋转一个对象

javascript - Easel.js stage.clear() 不工作

javascript - 如何在 react.js 中允许 CORS?

javascript - 无法更改函数内的全局变量(JavaScript)