Помогите с этим кодом AS3 - PullRequest
0 голосов
/ 06 января 2011

Здравствуйте, я новичок в AS3, так что я немного запутался, пытаясь получить простую модификацию этого кода:

import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.text.StyleSheet;


var fonts:Array /* of String */ = ["fonts/DroidSerif.swf","fonts/Lobster.swf"];
var fontsLoaded:int = 0;
var textStyleSheet:StyleSheet;


    loadFonts();


function loadFonts():void
{
    for each (var fontURL:String in fonts) 
        {
            var fontLoader:Loader = new Loader();
            fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onFontLoaded);
            fontLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onFontLoadError);
            fontLoader.load(new URLRequest(fontURL));
        }
}

function onFontLoadError(event:IOErrorEvent):void
{
    trace("ERROR: Could not find font "+event.target.loaderURL);
}

function onFontLoaded(event:Event):void
{
    fontsLoaded++;
    if (fontsLoaded == fonts.length) {
        onFontsLoadComplete();
    }}
function onFontsLoadComplete():void
        {
            trace("FONTS");
            trace(fonts.length + " fonts have been loaded");
            loadCSS();
        }

        function loadCSS():void
        {
            var loader:URLLoader = new URLLoader(); 
            loader.addEventListener(Event.COMPLETE, onCSSLoadComplete); 
            loader.load(new URLRequest("css/styles.css"));
        }

        function onCSSLoadComplete(event:Event):void
        {
            trace("CSS");
            textStyleSheet = new StyleSheet();
            textStyleSheet.parseCSS(event.target.data);
            loadXML();
        }

        function loadXML():void
        {
            var loader:URLLoader = new URLLoader(); 
            loader.addEventListener(Event.COMPLETE, onXMLLoadComplete); 
            loader.load(new URLRequest("xml/content.xml"));
        }

        function onXMLLoadComplete(event:Event):void
        {
            // get xml from event target data
            var xml:XML = XML(event.target.data);
            // convert the xml to a string
            var xmlString:String = xml;
            // send xml string to the displayHTML method
            trace("CARGO XML");
            displayHTML(xmlString);
        }

        function displayHTML(htmlText:String):void
        {
            var htmlTextBlock:HTMLTextBlock = new HTMLTextBlock();
            htmlTextBlock.blockWidth = 720;
            htmlTextBlock.textStyleSheet = textStyleSheet;
            htmlTextBlock.setHTML(htmlText);
            htmlTextBlock.x = 0;
            htmlTextBlock.y = 0;
            addChild(htmlTextBlock);
            trace("AJA");
        }

Теперь давайте сосредоточимся на последней функции displayHTML ().Как вы можете видеть, и я едва понимаю, что эта функция создает текстовое поле и заполняет его HTML-контентом.Я не хочу создавать новое текстовое поле, у меня уже есть одно динамическое текстовое поле в фильме с выбранной опцией html.Проблема в том, что я что-то делаю неправильно, я использую эту простую строку: mydinamictext.htmlText = htmlText.Но результат - не форматированный текст.Вот снимок экрана, один сверху с текстовым полем, созданным в коде, а нижний с моим текстовым полем: alt text Итак, как я могу применить CSS и шрифты к моему динамическому текстовому полю, а не создавать новое,ОГРОМНОЕ СПАСИБО!

1 Ответ

0 голосов
/ 06 января 2011

Вам нужно будет применить стили CSS к текстовому полю на сцене. Изначально вы устанавливали CSS для динамически создаваемого текстового поля в методе displayHTML.

Как упоминалось выше, вам нужно будет использовать следующее:

mydinamictext.textStyleSheet = textStyleSheet;

Вы можете просто использовать эту строку кода прямо над тем местом, где у вас был mydinamictext.htmlText = htmlText

Удачи.

...