文本输入旋转+样式文本

时间:2014-07-27 05:09:42

标签: actionscript-3 rotation textinput

我在舞台上有textInput,它不是组件;而是设置为textField的{​​{1}}。我还在舞台上有一个按钮,用于加粗inputText中文本的选定部分。

这是代码,完全正常:

inputField

问题: 当我旋转textInput时,文本消失。如果我嵌入字体并选择另一种抗锯齿方法,如“动画的消除锯齿”,则旋转的textInput会显示文本,但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. } } 功能不起作用。 我尝试过不同的字体。 Sans,Arial,我嵌入了它的所有风格(Bold,Italic,Bold-Italic)。什么!

我尝试将makeBold放在textInput内,然后轮换movieClip。不起作用。

我也尝试为movieClip设置embedFonts参数,不确定我是否正确使用

textInput

这次即使myInputField.embedFonts = true; 未旋转,文字也会消失。

我真的陷入困境,无法想到任何其他事情可以使粗体功能与旋转textField一起使用。

2 个答案:

答案 0 :(得分:1)

嵌入方法

对于应用于文本字段的旋转等操作,应首先嵌入文本字体。

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

您的文字字段' myText'实际放在现场。当您点击它时,在窗口'属性'中,执行以下操作:

  • 反别名(动画的反别名)
  • font embed

要嵌入字体,请点击“嵌入”字样。按钮>窗口'字体嵌入' > '字符范围' >选择:'大写','小写','数字','标点符号' (不要点击'所有')

3D方法

您还可以使用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);
}

答案 1 :(得分:0)

我将抗锯齿设置为它的默认值,即"使用设备字体"并使用rotationZ来旋转文本字段。它工作了!

使用rotation(非rotationZ)默认消除锯齿功能不会显示文字。

并使用rotation(而不是rotationZ)进行抗锯齿处理会使粗体功能无效。

所以只需添加以下代码就可以解决这个问题:

myInputField.rotationZ = 45;