Flash CS4, динамическое текстовое поле - PullRequest
0 голосов
/ 07 декабря 2009

Обычно я неплохо справляюсь с 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);

}

}

Ответы [ 5 ]

1 голос
/ 07 декабря 2009

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

var labels:TextField=new TextField();

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

1 голос
/ 07 декабря 2009

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

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

labels.x=xpos+spacer; //always 320
labels.y=ypos;        //always 100
0 голосов
/ 16 сентября 2010

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

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

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

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

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

EDIT:

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

labels.setTextFormat(newFormat);

вместо

labels.defaultTextFormat = newFormat;

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

0 голосов
/ 01 августа 2010

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

0 голосов
/ 07 декабря 2009

Используйте это

labels.defaultTextFormat=newFormat;

вместо

labels.setTextFormat(newFormat);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...