【问题标题】:apply external css to xml loaded into flash actionscript将外部 css 应用于加载到 flash actionscript 中的 xml
【发布时间】: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


【解决方案1】:

在我替换的样式表中: .f {color:red} 用 .f {color:#ff0000;} 从那以后我没有遇到任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2010-10-04
    • 1970-01-01
    • 2016-04-05
    • 2010-09-19
    • 2013-04-12
    相关资源
    最近更新 更多