Так что это немного сложно объяснить. У меня есть собственный класс Text, который автоматически изменяет размеры и устанавливает ширину текста при изменении его значения. Затем я беру этот текст и рисую его на растровом изображении, чтобы увеличить его, чтобы текст выглядел пиксельно.
У меня есть свойство с именем maxWidth
, которое позволяет вам ограничить ширину текста, если вы хотите, чтобы он поддерживал определенную ширину. По умолчанию maxWidth
- это ширина родительского текста, чтобы он не обрезался или неожиданно не расширял границы родительского текста.
Так что, к сожалению, когда я рисую текст, он иногда обрезается с правой стороны. Теперь я проверил все значения, и width
и textWidth
отображаются как в пределах их значений maxWidth
, но когда я сам просматриваю скриншоты, я вижу, что текст на самом деле примерно на 3 пикселя шире, чем должен будет.
Вот изображение, чтобы лучше объяснить, что я имею в виду:
![](https://i.stack.imgur.com/Kb0hu.png)
Я повернул границы, чтобы вы могли легко понять, что я имею в виду. Слово «и» в первой строке выводится за пределы ее границы. Вот строка кода, которая обрабатывает изменение размера текста при изменении его границ.
override protected function checkResize(value:String):void {
var bufferWidth:uint = Math.floor(Number(defaultTextFormat.size) / bufferDivisor) + bufferMin;
var maxWidth:Number = this.maxWidth;
x = y = 0;
if (parent is Stage) {
var stageParent:Stage = Stage(parent);
super.width = stageParent.stageWidth;
super.height = stageParent.stageHeight;
if (maxWidth == 0) maxWidth = stageParent.stageWidth;
}
else {
super.width = parent.width;
super.height = parent.height;
if (maxWidth == 0) maxWidth = parent.width;
}
maxWidth = maxWidth / scale;
text = value;
if (textWidth + bufferWidth <= maxWidth) super.width = textWidth + bufferWidth;
else super.width = maxWidth;
super.height = textHeight + 4;
if (textSnapshot) updateSnapshot();
if (alignRelation) Align.alignTo(textSprite, alignRelation, alignDirection, alignXOffset, alignYOffest);
}
И для этого текста, в частности, значение width
указывает на 512, что является правильным, поскольку это maxWidth
. Однако, если вы заметите верхнюю строку в тексте, она выходит за границы ширины 512, она фактически проходит до 515, даже если говорит, что ее width
равно 512. Еще более странным является textWidth
состояния, что это 510,4 даже хотя первая строка выходит далеко за рамки этой суммы. Я просто хочу знать, делаю ли я что-то неправильно или есть способ получить истинное значение textWidth
.