actionscript-3 - 为什么 scaleY=-1 不反映 AS3 代码中的文本?
问题描述
我正在尝试在 AS3 中动态创建文本,然后反映它。想到的最明显的方法是将其作为文本字段嵌入到精灵中,然后按如下方式反映精灵:
var mySprite = new Sprite();
addChild(mySprite);
charField = new TextField()
charField.text = "a"
mySprite.addChild(charField)
mySprite.scaleY = -1
使用此代码,屏幕上不会出现任何内容。如果我删除该scaleY
命令,则a
显示正常。我是否需要为要操作的文本启用某些属性?
解决方案
在 AS3 中,如果未嵌入字体,则无法像这样转换 TextField 。顺便说一下,同样适用于 TextField 的旋转。只需将 TextField 的 embedFonts 属性设置为 true 并不会这样做,因为这实际上不会嵌入字体。
尝试这个:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
public class Main extends Sprite
{
[Embed(systemFont="Arial",fontName="theFont",mimeType="application/x-font",fontWeight="normal",fontStyle="normal",advancedAntiAliasing="true",embedAsCFF="false")]
private var theEmbeddedFont:Class;
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var format:TextFormat = new TextFormat();
format.font = "theFont";
format.size = 44;
var mySprite:Sprite = new Sprite();
addChild(mySprite);
var charField:TextField = new TextField();
charField.defaultTextFormat = format;
charField.embedFonts = true;
charField.autoSize = TextFieldAutoSize.CENTER;
charField.wordWrap = false;
charField.text = "a";
mySprite.addChild(charField);
mySprite.x = mySprite.y = 100;
mySprite.scaleY = -1;
}
}
}
推荐阅读
- ruby-on-rails - 从私钥生成的公钥在 2 种情况下不同
- powershell - 创建本地组并将用户添加到组
- c# - 私有静态变量是否与 Web 应用程序中的多个会话/用户共享?
- c# - 如何在 Newtonsoft 中设置 DateTime 格式字符串?
- c# - 使用通用静态方法的会话缓存
- sql - 加入查询以选择表
- localization - Nativescript Localize 动态语言切换
- django - 服务器不再识别 python virtualenv
- powershell - 如何通过 Invoke-WebRequest 访问 neteller 帐户
- python - Python:使列表中的每个元素成为现有数据框中的新列