Hey,buddy! How are you doing these days?All right,Let us straight to the point.
flex嵌入字体有两种方式:
方式1,直接嵌入:
[Embed(mimeType='application/x-font', source='font/minicartoon.ttf', fontName='迷你简卡通')]
private var mnCartonFont:Class;
该方式不多说了。
方式2,将字体打包成swf,然后运行加载:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" initialize="init()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private var tf:TextField;
private var fontLoader:Loader;
private var swfUrl:String = "font/MiniCartoonFont.swf";
private var allFonts:Array = new Array();
......
TabNavigator默认是只初始化第一个TAB的,设一下属性,设了后会初始化其他TAB,creationPolicy="all"
补充下tab里面的容器是Canvas
动态生成TabNavigator tab页面
var canvas: Canvas = new Canvas();
canvas.label = "new Tab";
tabNavigator.addChild(canvas);
------------------------------------------------------
TabNavigator不仅可以支持Canvas作为子tab,也支持VBox作为子tab
我们想设置其样式,纯粹设置TabNavigator样式是不够的,它设置的只是内容容器的样式,而头部Tab的样式还是需要单独设置Tab的样式!
程序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="500" showFlexChrome="true" showStatusBar="false">
<mx:Style>
TabNavigator{
cornerRadius:0;
tabWidth: 100;
tabHeight: 30;
bo ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="top" applicationComplete="init()">
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
[Bindable]
public var dataColl:ArrayCollection=new ArrayCollection();
//ID编号
var k=1;
//联系人对象
var userobj:Object;
//性别默认状态
var sexobj:String="男";
//右键删除菜单
var menucont:ContextMenu;
//初始化行数
var p:int=0;
public function init():void{
menucont=new ContextMenu();
addMenuItems();
}
//添加右键菜单项
public function addMenuItems():void{
var item:ContextMenuItem = new ContextMenuItem("删除");
menucont.customItems.push(item);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemHandler);
menucont.hideBuiltInItems();
userdata.contextMenu = menucont;
}
//菜单右键事件处理
public function ......
制作可用鼠標框選的TileList,因為時間比較匆忙,所以错漏在所难免,请大家不吝赐教。另外小部分代码参考自网上。直接上代码。
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import mx.controls.TileList;
import mx.controls.listClasses.TileBaseDirection;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import mx.events.ScrollEvent;
[Style(name="nVerticalGap", type="String", inherit="no")]
[Style(name="nHorizontalGap", type="String", inherit="no")]
public class CustomTileList extends TileList
{
/**
* 垂直間距
*/
private var _verticalGap:Number = 0;
/**
* 水平間距
*/
private var _horizontalGap:Number = 0;
/**
* 底部背景
*/
private var bg:UIComponent;
/**
* 選圖ui
*/
private var selectBox:UIComponent;
/**
* 開始畫圖的落點
*/
private var startPoint:P ......
HScrollBar{
up-arrow-skin: ClassReference( null );
down-arrow-skin: ClassReference( null );
}
VScrollBar{
up-arrow-skin: ClassReference( null );
down-arrow-skin: ClassReference( null );
}
http://www.brentlamborn.com/post/Flex-Scrollbar-Remove-up-down-arrows.aspx ......
什么是Cairngorm?
Cairngorm(中文名:“烟水晶”?)是一个轻量级的Flex RIA程序开发框架,从而使程序可扩展性、可维护性都大大提高,其本身并不是一个完整的企业应用,它只是提供了一个开发骨架,Adobe称之为体系。
Cairngorm体系
主要包括以下几个部分:
1、VO(Value Object)
IValueObject 和 ValueObject 只是为了提高VO类的可读性,表示该类是一个ValueObject类,其它没有任何实际作用。其可能是为将来而设计的,我们在应用过程中不需要实现任何接口函数。
2、Model
定义了ModelLocator接口,我们只需要实现该接口,把所需要绑定的数据保存在这里。通常我们都采用单例模式(Singleton Pattern)来实现,并按照项目模块进行分类,避免把整个项目的所有数据都保存在一个类文件中。换句话说,ModelLocator是整个系统的数据中心。
3、View
有ViewHelper.as 和 ViewLocator.as,在Cairngorm2.2.1版本中已被废除。
4、Commands
定义了ICommand接口,该接口定义了一个唯一需要实现的方法execute(),这其实就是典型的命令模式,我们只要实现此接口,并不需要关心其具体实现方式。
5、Control
含三个基类:CairngormEvent、CairngormEventDispatche ......