Flex嵌入字体的方法(二)
上次说了直接把字体嵌入到flex程序中的方法,这次写一下将字体编译成swf后供其它flex程序加载来调用的方法。
首先,新建一个actionscript的project,取名为FlexFont,将字体文件放到src/font目录下,主程序为
FlexFont.as文件,内容如下:
package {
import flash.display.Sprite;
public class FlexFont extends Sprite {
[Embed(source="font/adobehei.otf",fontName="AdobeHei",advancedAntiAliasing="true",mimeType="application/x-font")]
public var AdobeHei:Class;
}
}
编译project产生FlexFont.swf文件,到这里字体的swf文件已经编译完成。
然后,将生成的swf文件放到需要使用相应字体的flex程序目录下,在flex的Application中使用SWFLoader加载
FlexFont.swf,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
width="100%" height="100%" fontSize="20"
creationComplete="initApp()">
<mx:Script>
<![CDATA[
private function initApp():void {}
private function fontLoadComplete(event:Event):void {
try {
Font.registerFont(event.target.content["AdobeHei"]);
txt.setStyle("fontFamily", "AdobeHei");
}
catch(e:Error){
trace(e.toString());
}
}
]]>
</mx:Script>
<mx:SWFLoader source="FlexFont.swf"
complete="fontLoadComplete(event);"
width="0" height="0" includeInLayout="false" visible="false"/>
<mx:TextArea id="txt" width="300" height="300"/>
</mx:Application>
这时,TextArea的字体已经被设置为FlexFont中的AdobeHei了。
相关文档:
flashbuilder中可以建立flex工程与actionscript工程.
flex工程内可以使用mxml是完成设计工作.
actionscript工程建立时默认只有:
playerglobal.swc
flex.swc
utilities.sec
playerglobal.swc
这几个类库.没有framework.swc,就无法使用Button等控件了.
解决方案是 actionscript工程中加入framework.swc.
路径是 x:/A ......
http://www.mvelopes.com/mvelopes/online_budget.php flex
做的分析软件
http://www.alex-uhlmann.de/flash/adobe/blog/distortionEffects/effectCube/
这玩意,Flex2的扭曲变形效果,呵呵,有可能你用得到flex中
http://webmessenger.yahoo.com/
yahoo的webmessenger
http://www.picnik.com/app
这个也不错
http: ......
之前一直没在意父容器和子容器各自的生成次序,知道在项目中遇到一种case:初始化界面时父容器初始化的内容由子容器先初始化再触发,但是父容器必须在初始化时就已经加上了对子容器的监控。这就造成一对矛盾,既想先生成子容器又想先生成父容器。
先自己写段代码测试一下生成顺序,父容器
<?xml version="1.0" ......
在Flex应用中常常需要以一定的格式来显示时间,以下是一种做法。
首先创建一个DateFormatter 控件
<mx:DateFormatter id="df" formatString="YYYY-MM-DD JJ:NN:SS"/>
formatString="YYYY-MM-DD JJ:NN:SS"指定了时间的格式为2009-6-20 19:02:27,这里可以设置成自己需要的格式。
然后写个函数
......
原来是这样,
我一开始用的是flex_sdk_3.4.1.10084(Stable Builds),(由于sdk3.5有combobox的bug),但是在用RSL的时候,发现flash player 的AssetCache里就是没有swz,
原因是:我用的sdk是Stable Builds,它是没有swz的,
官网的解释是:
The Flex team dos not currently create signed versions of the major RSL ......