Вопрос

Обычно у меня довольно хорошо получается обходить as3, но этот действительно вызывает у меня головную боль

У меня есть этот код ниже, и все работает нормально, я могу отследить вывод, но по-прежнему текст не отображается на сцене, какие-либо подсказки??

import flash.display.Sprite;
import flash.text.TextField;
import flash.display.MovieClip;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
var total:XMLList;
var totalPram:XMLList;
var totalImgs:XMLList;
var totalX:XMLList;
var totalY:XMLList;
var totalInfo:XMLList;
var pram:XML;
var img:XML;
var playHead:Number=0;
var spacer:Number=20;
var xpos:Number=300;
var ypos:Number=100;
/////////////////////////////// formating ///////////////////////////////////
var newFormat:TextFormat = new TextFormat();// Text formating
newFormat.size=30;
newFormat.bold;
newFormat.font="Arial";
newFormat.color="0xCBFF00";
//newFormat.leading=-7;
////////////////////////////////////////////////////////////////////////////
xmlLoader.load(new URLRequest("info_1.xml"));
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
//var tagHolder:MovieClip = new MovieClip();

function LoadXML(e:Event):void {
xmlData=new XML(e.target.data);
xmlData.ignoreWhite=true;
Parseinfo(xmlData);

}
function Parseinfo(Details:XML):void {
total=Details.blink;
totalPram=Details.blink.tag;
totalInfo=Details.blink.more;
totalImgs=Details.blink.img;
totalY=Details.totalY.ypos;
totalX=Details.totalX.xpos;
for (var i=0; i<=1; i++) {
    //addChild(tagHolder);
    pram=totalPram[i];
    var labels:TextField=new TextField  ;// txtfield for questions to be    displayed
    labels.setTextFormat(newFormat);
    //mytxt2.autoSize=TextFieldAutoSize.LEFT;
    labels.embedFonts=true;
    labels.text=pram;
    labels.x=xpos+spacer;
    labels.y=ypos;
    trace(labels.text);
    addChild(labels);

}

}

Это было полезно?

Решение 3

Использовать это

labels.defaultTextFormat=newFormat;

вместо

labels.setTextFormat(newFormat);

это также решит проблему встраивания шрифтов.Хотя всем спасибо за помощь

Другие советы

Вы размещаете текстовые поля друг над другом.

var spacer:Number=20;
var xpos:Number=300;
var ypos:Number=100;

labels.x=xpos+spacer; //always 320
labels.y=ypos;        //always 100

Первое, что я вижу, это в строке, где вы создаете TextField, должно быть:

var labels:TextField=new TextField();

Кроме того, попробуйте сделать это без использования setTextFormat(), чтобы проверить, связана ли проблема со встроенным шрифтом или чем-то еще.

Убедитесь, что вы встроили шрифт и что он отображает то, что говорит текстовое поле.

У меня была такая же проблема.Согласно документации по текстовому полю as3:

Если для свойства embedFonts задано значение true для текстового поля, необходимо указать шрифт для этого текста с помощью свойства font объекта TextFormat , применяемого к текстовому полю. Если указанный шрифт не встроен в SWF-файл, текст не отображается.

Другими словами, вам нужно иметь некоторое динамическое текстовое поле со встроенным шрифтом на этапе, когда вы добавляете его программно, или, в качестве альтернативы, вы можете создать свой собственный символ шрифта с возможностью экспорта в библиотеку и добавить его в свое текстовое поле:

var myFont:Font = new MyFont();
...
newFormat.font = myFont.fontName;

Я думаю, вы уже поняли это к настоящему времени.Я надеюсь, что это будет полезно кому-то еще =)

Редактировать:

В этом случае вам следует использовать

labels.setTextFormat(newFormat);

Вместо того, чтобы

labels.defaultTextFormat = newFormat;

Последний вариант, похоже, у меня не работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top