Actionscript 3 文本未出现在FlashDevelop项目中。但也不会抛出任何错误
更新 我发现了一些有用的东西!我会在计时器启动后将此作为答案发布。同时,我将接受一个可以解释我的解决方案为何有效的答案: 我换了这行Actionscript 3 文本未出现在FlashDevelop项目中。但也不会抛出任何错误,actionscript-3,Actionscript 3,更新 我发现了一些有用的东西!我会在计时器启动后将此作为答案发布。同时,我将接受一个可以解释我的解决方案为何有效的答案: 我换了这行 private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff); private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff);
private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff);
private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff);
为此:
private var myAtariFormat:TextFormat = new TextFormat("fatPixel",25,0x00ffff);
private var myAtariFormat:TextFormat = new TextFormat("fatPixel",25,0x00ffff);
并包括embedAsCFF=“false”
它成功了。我不知道为什么。这对任何想解释的人来说都是显而易见的吗?是因为“Class
”没有属性“fontName
”吗?我们把我的字体称为类
,而不是字体
原职 这是我第一次使用FlashDevelop。我在菜单和记分板上有按钮。它们都有一个文本字段。在AdobeAnimate中,一切都很好,但在FlashDevelop中,我知道我需要严格使用AS3代码嵌入字体,因为没有GUI库可以将它们放入 我发现了这一点,但它只证实(我认为)我做得正确,而显然,我没有 因此,这是我当前的排列,不会抛出任何错误,游戏加载和运行良好(但没有任何文本),按钮工作,但没有任何文本:
public class Main extends Sprite
{
// ********** EMBEDDED ASSESTS **
[Embed(source = "/../lib/FATPIXEL.TTF", fontName = "fatPixel")] public static var myFatPixels:Class;
然后在创建菜单按钮时:
// ********* BUTTONS **********
private var button1:RoundButton= new RoundButton(60,30,gameReset,0xff386c,0x0,"1 Player");
它们都在我的主文档类中。
以下内容包括my button类中的构造函数以及包中的属性声明部分:
[Embed(source = "/../lib/AtariSmall.ttf", fontName = "smallAtari")] public var myAtariFont:Class;
public var tF:TextField = new TextField();
private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff);
var b:Sprite = new Sprite;
var txt:String = new String();
public function RoundButton(w:Number,h:Number,f:Function,colorA:uint,colorB:uint = 0x555599,text:String="button",dat2:Boolean = false):void {
addChild(tF);
tF.text = text;
tF.embedFonts = true;
tF.setTextFormat(myAtariFormat);
tF.defaultTextFormat = myAtariFormat;
}
哦,我的.ttf
文件在这里:
有人知道是什么导致了我的问题吗?在AdobeAnimate中,通过在下拉菜单中使用该选项和GUI访问库,嵌入变得更简单。语法明显不同,我可以使用Font类,而我在网上找到的所有资料都显示我可以使用Font类?我的意思是:
Adobe动画制作
var myFatPixels:Font = new FatPixels();
FlashDevelop
var myFatPixels:Class;
我想如果我能更好地理解这两行代码之间的区别,我就能找出我做错了什么
所以,我制作了一个简单的脚本,至少尝试显示一些文本。它工作,但字体看起来像泰晤士报新罗马或其他一些系统字体,而不是它应该看起来像的字体。以下是我的代码:
package
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.*;
/**
* ...
* @author Neal Davis
*/
public class Main extends Sprite
{
[Embed(source = "../lib/FATPIXEL.TTF", fontName = "fatPixel")] public static var myFatPixels:Class;
private var tF:TextField = new TextField();
private var myFont:Font = new myFatPixels();
private var myAtariFormat:TextFormat = new TextFormat(myFatPixels.fontName,25,0xB6A4E3);
public function Main()
{
removeEventListener(Event.ADDED_TO_STAGE, init);
trace("hello world");
var b:Sprite = new Sprite();
addChild(b);
b.addChild(tF);
tF.defaultTextFormat = myAtariFormat;
tF.text = "button";
tF.setTextFormat(myAtariFormat);
}
}
}
结果是
但它看起来应该更像
我更改了这一行
为此:
private var myAtariFormat:TextFormat = new TextFormat("fatPixel",25,0x00ffff);
private var myAtariFormat:TextFormat = new TextFormat("fatPixel",25,0x00ffff);
并包括embedAsCFF=“false”。
我认为这是因为我们只能嵌入类型为Class
(而不是Font
)的元素,Class
没有fontName
的属性。那么获取myFatPixel.fontName
不会返回任何内容?大概我的意思是,似乎应该这样做,因为我们在嵌入行中声明了一个fontName
值,但无论如何,传递名称的文本字符串(“fatPixel”)就成功了
圣诞夜更新
针对“这可能是一个操作顺序问题”的恶感,我采取了以下措施:
public function RoundButton(w:Number,h:Number,f:Function,colorA:uint,colorB:uint = 0x555599,text:String="button",dat2:Boolean = false):void {
[Embed(source = "/../lib/FATPIXEL.ttf", fontName = "fatPixel", embedAsCFF = "false")]
var myFatPixels:Class;
myAtariFormat = new TextFormat(myFatPixels.fontName,25,0x00ffff);
按钮显示时没有文本。同样,当我将
myFatPixels.fontName
切换到简单的“fatPixel”
时,一切都很好。因此,在这种情况下,这似乎不是一个操作顺序问题,除非我没有领会你的意思?aaah,@NealDavis,你将自己解决这个问题:)谢谢。最有可能的是,这是有效的(或者说原版不起作用),因为操作顺序。初始化类(创建所有函数和变量),然后创建它引用的类(如果尚未创建)。由于您试图在Main
classes签名中引用嵌入的类(例如不在函数中),因此在初始化类时(但嵌入的类尚未初始化),该代码将运行。如果将myAtariFormat
var的赋值从signature/var声明移到构造函数中,它可能会起作用。但是,查找有关类级执行顺序的文档很困难,所以我只是猜测。无论如何,除了原语值之外,为类范围的变量分配任何其他值都不是一个好主意,因为不保证它们在那个时候可用。我想我明白你的意思了。我将在今晚或假期后做一次尝试,并让你知道。@Badfeeling关于这件事,请在上面的回答中查看我的更新。谢谢