不小心看到同事Den在弄个小东西:在Flash里使用HTML和CSS,代码是这样:

var myStyle:TextField.StyleSheet = new TextField.StyleSheet();
myStyle.load("sample.css");
content_txt.styleSheet = myStyle;
content_txt.multiline= true;
content_txt.wordWrap = true;
content_txt.html = true;
var story:XML = new XML();
story.ignoreWhite = true;
story.load("sample.html");
story.onLoad = function () {
content_txt.htmlText = story;
}

这个是加载外部CSS跟HTML(其实是加载XML当HTML用-_-b )的。后来Den写了两种把样式写在AS里的方式:

var css_str:String = ".aoao{color:#010101;font-weight:bold;} .aoao:hover{color:#ff0000}";
myStyle.parseCSS(css_str)
myStyle.setStyle(".aoao", {color:'#010101', fontWeight:'bold'});
myStyle.setStyle(".aoao:hover", {color:"#ff0000"});

其实HTML也可以写在AS里面,直接拼string就行。对于CSS在写在AS里还是加载外部CSS就要看情况了,用Web上还要考虑请求数,文件大小,缓存,更重要的是维护成本。不过在Web应用我也没想到有什么比较适合的应用,在浏览器里使用HTML加载Flash之后再用Flash加载HTML和CSS意义并不大,而且支持不是一般的弱,看一下支持的HTML标签CSS属性,=。= 本来想用来解决中文下划线的问题,结果还是不行,据说别人是用flash画下划线滴。

浏览器的应用玩玩就算了。还是留在桌面应用吧。

Creative Commons License

共有 3 条评论

  1. Amer

    用flex做客户端C++打包都会用到这个,这使客户端的UI比以前更变实现。我们也用的类似的方法,通过XML加载进去的:)

  2. Amer

    不知你客户端有没有遇到FLASH里面的字体问题。WORD的那套字体完全没问题,英文也没有,相反有一些系统字体无法用。因为FLEX是把它做成SWF转进去的,embeded .TTF似乎没用~~

  3. aoao

    flash的字体太恶心了。。我最不喜欢的就是字体,=。=渲染又得达到一定的效果,真是又爱又恨。

发表评论

(必填)

(必填)

 评论仅支持"a、abbr、strong、em、blockquote、code"几个简单的标签