Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测文本何时溢出/包装动能文本?_Javascript_Kineticjs - Fatal编程技术网

Javascript 如何检测文本何时溢出/包装动能文本?

Javascript 如何检测文本何时溢出/包装动能文本?,javascript,kineticjs,Javascript,Kineticjs,我正在编写的某些代码的一个要求是检测Kinetic.text框中的文本是否过长,是否溢出/换行,并减小字体大小以使其适合(水平) 我似乎无法确定文本何时会在动能.text中溢出/换行 fontsize是文本区域的高度。当文本开始溢出/换行时,getHeight()getTextHeight()或lineHeight()似乎都不会更改。html画布上下文有一个测量文本宽度的measureText方法 下面是一个将changeText方法添加到Kinetic.Text的示例 当文本超过maxLine

我正在编写的某些代码的一个要求是检测Kinetic.text框中的文本是否过长,是否溢出/换行,并减小字体大小以使其适合(水平)

我似乎无法确定文本何时会在动能.text中溢出/换行


fontsize是文本区域的高度。当文本开始溢出/换行时,getHeight()getTextHeight()或lineHeight()似乎都不会更改。

html画布上下文有一个测量文本宽度的measureText方法

下面是一个将changeText方法添加到Kinetic.Text的示例

当文本超过maxLineWidth时,changeText方法会通过添加换行符来包装指定的文本

演示:

//创建屏幕外画布
var canvas=document.createElement(“canvas”);
var ctx=canvas.getContext(“2d”);
//创建一个Dynamic.Text对象
var wrappedText=新的动能.Text({
x:10,
y:30,
填充:“黑色”,
尺寸:14,
fontFamily:“Verdana”,
文本:“测试…”
});
//将maxLineWidth特性添加到文本节点
wrappedText.maxLineWidth=250;//像素
//将changeText方法添加到文本节点
//此方法将包装指定的文本
//通过添加换行符在maxLineWidth内
wrappedText.changeText=函数(文本){
var maxLength=this.maxLineWidth;
ctx.font=this.getFontSize()+“”+this.getFontFamily();
var words=text.split(“”);
var=”;
var line=“”;
for(var i=0;i最大长度){
已包装+=(行+“\n”);
第“”行;
}
行+=“”+字[i];
}
包裹+=线;
此.setText(已包装);
layer.draw();
}
layer.add(wrappedText);
//测试
wrappedText.changeText(someText);
layer.draw();

html画布上下文有一个measureText方法,用于测量指定文本的宽度

下面是一个将changeText方法添加到Kinetic.Text的示例

当文本超过maxLineWidth时,changeText方法会通过添加换行符来包装指定的文本

演示:

//创建屏幕外画布
var canvas=document.createElement(“canvas”);
var ctx=canvas.getContext(“2d”);
//创建一个Dynamic.Text对象
var wrappedText=新的动能.Text({
x:10,
y:30,
填充:“黑色”,
尺寸:14,
fontFamily:“Verdana”,
文本:“测试…”
});
//将maxLineWidth特性添加到文本节点
wrappedText.maxLineWidth=250;//像素
//将changeText方法添加到文本节点
//此方法将包装指定的文本
//通过添加换行符在maxLineWidth内
wrappedText.changeText=函数(文本){
var maxLength=this.maxLineWidth;
ctx.font=this.getFontSize()+“”+this.getFontFamily();
var words=text.split(“”);
var=”;
var line=“”;
for(var i=0;i最大长度){
已包装+=(行+“\n”);
第“”行;
}
行+=“”+字[i];
}
包裹+=线;
此.setText(已包装);
layer.draw();
}
layer.add(wrappedText);
//测试
wrappedText.changeText(someText);
layer.draw();

html画布上下文有一个measureText方法,用于测量指定文本的宽度

下面是一个将changeText方法添加到Kinetic.Text的示例

当文本超过maxLineWidth时,changeText方法会通过添加换行符来包装指定的文本

演示:

//创建屏幕外画布
var canvas=document.createElement(“canvas”);
var ctx=canvas.getContext(“2d”);
//创建一个Dynamic.Text对象
var wrappedText=新的动能.Text({
x:10,
y:30,
填充:“黑色”,
尺寸:14,
fontFamily:“Verdana”,
文本:“测试…”
});
//将maxLineWidth特性添加到文本节点
wrappedText.maxLineWidth=250;//像素
//将changeText方法添加到文本节点
//此方法将包装指定的文本
//通过添加换行符在maxLineWidth内
wrappedText.changeText=函数(文本){
var maxLength=this.maxLineWidth;
ctx.font=this.getFontSize()+“”+this.getFontFamily();
var words=text.split(“”);
var=”;
var line=“”;
for(var i=0;i最大长度){
已包装+=(行+“\n”);
第“”行;
}
行+=“”+字[i];
}
包裹+=线;
此.setText(已包装);
layer.draw();
}
layer.add(wrappedText);
//测试
wrappedText.changeText(someText);
layer.draw();

html画布上下文有一个measureText方法,用于测量指定文本的宽度

下面是一个将changeText方法添加到Kinetic.Text的示例

当文本超过maxLineWidth时,changeText方法会通过添加换行符来包装指定的文本

演示:

//创建屏幕外画布
var canvas=document.createElement(“canvas”);
var ctx=canvas.getContext(“2d”);
//创建一个Dynamic.Text对象
var wrappedText=新的动能.Text({
x:10,
y:30,
填充:“黑色”,
尺寸:14,
fontFamily:“Verdana”,
文本:“测试…”
});
//将maxLineWidth特性添加到文本节点
wrappedText.maxLineWidth=250;//像素
//将changeText方法添加到文本节点
//此方法将包装指定的文本
//通过添加换行符在maxLineWidth内
wrappedText.changeText=函数(文本){
var maxLength=this.maxLineWidth;
ctx.font=this.getFontSize()+“”+this.getFontFamily();
var words=text.split(“”);
var=”;
var line=“”;
for(var i=0;i// create an offscreen canvas

var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");

// create a Kinetic.Text object

var wrappedText = new Kinetic.Text({
    x: 10,
    y: 30,
    fill: 'black',
    fontSize: 14,
    fontFamily: "Verdana",
    text: "testing..."
});

// add a maxLineWidth property to the text node

wrappedText.maxLineWidth = 250; // pixels

// add a changeText method to the text node 
// this method will wrap the specified text
// within maxLineWidth by adding newline characters

wrappedText.changeText = function (text) {

    var maxLength = this.maxLineWidth;
    ctx.font = this.getFontSize() + " " + this.getFontFamily();
    var words = text.split(" ");
    var wrapped = "";
    var line = "";
    for (var i = 0; i < words.length; i++) {
        if (ctx.measureText(line + " " + words[i]).width > maxLength) {
            wrapped += (line + "\n");
            line = "";
        }
        line += " " + words[i];
    }
    wrapped += line;
    this.setText(wrapped);
    layer.draw();
}
layer.add(wrappedText);

// TESTING

wrappedText.changeText(someText);

layer.draw();