【发布时间】:2012-01-20 09:26:47
【问题描述】:
我需要将 styled xml 渲染到 Flash 游戏中。 这是我尝试过的,但 css 样式不起作用:
这是我的样式表wooden.css:
.f {color:red;}
这是我的 xml wooden.xml:
<?xml version="1.0" encoding="utf-8"?>
<woorden>
<spel>
<goed>boordevol</goed>
<fout>boordenvol</fout>
<fbk><![CDATA[Het is dus ber<span class="f">e</span>goed, boordevol, reuzeleuk en apetrots, maar berenvel en reuzenlaars.]]></fbk>
</spel>
</woorden>
到目前为止,这是我的 actionscript:
package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.Event;
import flash.xml.*;
import flash.text.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.ui.Mouse;
public class BO_tussen_n extends MovieClip {
internal var woorden:XML;
internal var spelAr:Array;
internal var sheet:StyleSheet;
internal var myLoader:URLLoader;
public function BO_tussen_n () {
//constructor
var ld:myLd = new myLd();
ld.x = 20;
ld.y = 160;
ld.name = "ld";
addChild (ld);
load_xml ();
}
internal function load_xml () {
var myLoader:URLLoader = new URLLoader();
var itemNumber:uint = 0;
myLoader.load (new URLRequest("woorden.xml"));
myLoader.addEventListener (Event.COMPLETE, handleMyData);
function handleMyData (event:Event):void {
woorden = new XML(event.target.data);
woorden.ignoreWhite = true;
myLoader = null;
load_css ();
}
}
internal function load_css () {
myLoader = new URLLoader();
sheet = new StyleSheet();
myLoader.load (new URLRequest("woorden.css"));
myLoader.addEventListener(Event.COMPLETE, load_game);
}
internal function load_game (event:Event) {
trace(myLoader.data);
sheet.parseCSS(myLoader.data);
removeChild (getChildByName("ld"));
add_text ();
}
internal function add_text () {
var myFont:Font = new myFt();
var myFmt:TextFormat = new TextFormat();
myFmt.font = myFont.fontName;
myFmt.align = "center";
myFmt.leading = 1.2;
myFmt.size = 14;
myFmt.bold = true;
var myText:TextField = new TextField();
myText.defaultTextFormat = myFmt;
myText.x = 5;
myText.y = 5;
myText.width = 500;
myText.height = 100;
myText.autoSize = "left";
myText.textColor = 0x000000;
myText.multiline = true;
myText.wordWrap = true;
myText.styleSheet = sheet;
myText.htmlText = woorden.spel[0].fbk;
myText.name = "topTekst";
addChild (myText);
}
}
编辑:为了实验,我在我的样式表中添加了一个 h1 样式,并且 flash 确实正确地呈现了它。那么它可能与跨度标签或类有关?
【问题讨论】:
-
我解决了这个问题。在我替换的样式表中: .f {color:red} 用 .f {color:#ff0000;} 并且有效:)
-
如果您删除 CDATA 并且只留下文本和 e 会发生什么?
标签: css xml actionscript-3 flash-cs5