制作可用鼠標框選的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 ......
flex应用看久了,一个默认的装载loading界面就会导致审美疲劳,下面提供一种方法,让你可以自定义你的装载界面。
1,在src目录下建立自定义类,两个文件代码如下 在adminConsole项目可找到。
*********************************************************************************
1、Preloader.as
package com.preloader
2、
ProgressBar.as
package com.preloader
3、
修改你的Application的属性: preloader="com.preloader.Preloader"
4、运行应用,默认的loading已经变成你想要的效果了。
......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
<mx:Script>
<!--[CDATA[
import mx.controls.Alert;
public var newBuildMenuItem:ContextMenuItem;//菜单项变量
private function init(): void//初始化函数
{
createTreeMenuItem();
tree.contextMenu = getTreeContxtMenu();
}
public function createTreeMenuItem(): void//菜单项创建函数,并添加菜单监听器
{
newBuildMenuItem = new ContextMenuItem("新建");
newBuildMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, newBuildHandler2);
}
private function getTreeContxtMenu(): ContextMenu//将菜单项目添加到菜单中
{
var contextMenu: ContextMenu = new ContextMenu();
contextMenu.hideB ......
绪论
Libxml是一个有免费许可的用于处理XML、可以轻松跨越多个平台的C语言库。Libxml实现了读、创建及操纵XML数据功能。
这个指南基于一个简单的XML应用。
数据类型
Libxml 定义了许多数据类型,它隐藏了杂乱的来源以致你不必处理它除非你有特定的需要。xmlChar 替代char,使用UTF-8编码的一字节字符串。如果你的数据使用其它编码,它必须被转换到UTF-8才能使用libxml的函数。在libxml编码支持WEB页面有更多关于编码的有用信息。
XmlDoc 包含由解析文档建立的树结构,xmlDocPtr是指向这个结构的指针。
xmlNodePtr and xmlNode 包含单一结点的结构xmlNodePtr是指向这个结构的指针,它被用于遍历文档树。
解析文档
解析文档时仅仅需要文件名并只调用一个函数,并有错误检查。
①xmlDocPtr doc;
②xmlNodePtr cur;
③doc = xmlParseFile(docname);
④if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
⑤cur = xmlDocGetRootElement(doc);
⑥if (cur == NULL) {
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc);
return;
}
⑦if (xmlStrcmp(cur->name, (const x ......