文本输入旋转+样式文本



我有textInput在舞台上,它不是组件;而是一个设定为inputTexttextField。我在舞台上也有一个按钮来加粗inputField中选定的文本部分。

下面是代码,它工作得很好:
var formatDefBold: TextFormat = new TextFormat();
formatDefBold.bold = false;
var formatBold: TextFormat = new TextFormat();
formatBold.bold = true;
boldBtn.addEventListener(MouseEvent.CLICK, makeBold);
function makeBold(event: MouseEvent):void
{
    var sbi:Number = myInputField.selectionBeginIndex;
    var sei:Number = myInputField.selectionEndIndex;
    if (sbi != sei)
    {
        var section:TextFormat = myInputField.getTextFormat(sbi,sei);
        if (section.bold == false)
        {
            myInputField.setTextFormat(formatBold, sbi, sei);
        }
        else
        {
            myInputField.setTextFormat(formatDefBold, sbi, sei);
        }
        stage.focus = this[selectedTextField]; // highlight the selected text again.
    }
}

:当我旋转textInput时,文本就消失了。如果我嵌入字体并选择另一种反混叠方法,如"动画反混叠",旋转的textInput显示文本很好,但makeBold函数不起作用。我试过不同的字体。Sans, Arial,我嵌入了所有的样式(粗体,斜体,粗体-斜体)。没有什么!

我试过把textInput放在movieClip里面,然后旋转movieClip。不工作。

我也试过为textInput设置embedFonts参数,不确定我是否做得正确

myInputField.embedFonts = true;

这一次,即使没有旋转textField,文本也会消失。

我真的卡住了,想不出还有什么可以让bold函数与旋转的textInput一起工作的

嵌入方法

对于应用于文本字段的任何操作,如旋转,您应该首先嵌入文本字体。

myText.text = "rotation with embed font";
myText.rotation = 10;

您的文本字段'myText'被物理地放在场景中。当你点击它的时候,在窗口的"属性"中,这样做:

  • 反混叠(动画的反混叠)
  • 字体嵌入

要嵌入字体,请单击"嵌入"按钮>窗口"字体嵌入">"字符范围">选择:"大写","小写","数字","标点符号"。(不要点击'All')

3 d方法

您还可以使用Flash Player 10中提供的3D方法旋转动态文本字段而不嵌入字体。

var myTextField:TextField = new TextField();
this.addChild(myTextField);
var fo:TextFormat = new TextFormat("Arial", 11, 0xFF0000);
myTextField.defaultTextFormat = fo;
myTextField.text = "3D rotation";
myTextField.rotationZ = 45;

在您的情况下,下面的代码工作完美(您只需要在您的场景中放置一个名为'boldBtn'的按钮):

var myInputField:TextField = new TextField();
this.addChild(myInputField);
var fo:TextFormat = new TextFormat("Verdana", 12, 0x000000, false);
myInputField.defaultTextFormat = fo;
myInputField.text = "3D rotation";
myInputField.rotationZ = 45;
boldBtn.addEventListener(MouseEvent.CLICK, makeBold);
function makeBold(event:MouseEvent):void
{
    fo.bold = !fo.bold;
    myInputField.setTextFormat(fo);
}

我将抗锯齿设置为默认值,即"使用设备字体",并使用rotationZ来旋转文本字段。这招奏效了!

使用rotation(而不是rotationZ)默认抗锯齿不会显示文本。

和使用rotation(而不是rotationZ)与抗锯齿使粗体功能不起作用。

所以这个问题可以通过添加这行代码来解决:

myInputField.rotationZ = 45;

相关内容

  • 没有找到相关文章

最新更新