2011-01-06 156 views
0

您好IM在AS3非常新,所以我是一個痘痘弄得試圖讓一個簡單的修改這個代碼:幫助這個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。但結果是一個非Css格式的文本。這裏是一個屏幕截圖,其中一個是用代碼創建的textfield,另一個是用我的文本框創建的文本框: alt text 那麼,如何將css和字體應用到我的動態文本框中,而不是創建一個新的。非常感謝!

+0

你有'mydinamictext.textStyleSheet = ...'在那裏嗎? – 2011-01-06 01:27:43

+0

如果您使用它,您將獲得此錯誤:場景1,圖層'圖層1',圖框1,線87 \t 1119:通過靜態類型爲flash.text:TextField的引用訪問可能未定義的屬性textStyleSheet。 – DomingoSL 2011-01-06 01:58:57

+0

您需要設置的TextField屬性是styleSheet,因此您可以很輕鬆地在TextField的文檔中查找mydinamictext.styleSheet:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/ flash/text/TextField.html#styleSheet – 2011-01-06 03:27:57

回答

0

您需要將CSS樣式應用於舞臺上的文本框。您最初將CSS設置爲displayHTML方法內動態創建的文本框。

正如上面提到的,您需要使用以下命令:

mydinamictext.textStyleSheet = textStyleSheet;

你應該能夠只使用該行代碼右上方你有mydinamictext.htmlText =的htmlText

祝您好運的地方。

+0

場景1,圖層'圖層1',圖框1,線87 \t 1119:通過靜態類型爲flash.text:TextField的引用訪問可能未定義的屬性textStyleSheet。 – DomingoSL 2011-01-06 01:58:30