亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開發(fā) > Flex > 正文

Flex4 使用itemRenderer 為Tree加線具體實(shí)現(xiàn)

2024-09-08 18:17:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
復(fù)制代碼 代碼如下:

package Modules
{
import flash.display.BitmapData;
import flash.display.Graphics;

import mx.collections.ICollectionView;
import mx.collections.IList;
import mx.controls.Tree;
import mx.controls.treeClasses.ITreeDataDescriptor;
import mx.controls.treeClasses.TreeItemRenderer;


/**
* Alpha value for the Tree lines.
* @default 1
*/
[Style(name="lineAlpha", type="Number", format="Length", inherit="no")]

/**
* Color of the Tree lines.
* @default 0x808080
*/
[Style(name="lineColor", type="uint", format="Color", inherit="no")]

/**
* Thickness value for the Tree lines.
* @default 1
*/
[Style(name="lineThickness", type="Number", format="Length", inherit="no")]

/**
* The Tree line style - none, dotted (default), or solid.
* @default "dotted"
*/
[Style(name="lineStyle", type="String", enumeration="solid", inherit="no")]

/**
* Extends TreeItemRenderer to draw the dotted lines of the tree.
* It supports 3 line styles - dotted (default), solid, or none.
* And the tree line color, alpha, and thickness values are configurable styles too.
*
* <pre>
* <ui:TreeItemLinesRenderer
* <b>Styles</b>
* lineAlpha="1"
* lineColor="#808080"
* lineThickness="1"
* lineStyle="dotted"
* >
* ...
* <i>child tags</i>
* ...
* </ui:TreeItemLinesRenderer>
* </pre>
*
* @author Chris Callendar
* @date April 20th, 2009
*/
public class TreeItemLinesRenderer extends TreeItemRenderer
{

public static const DOTTED:String = "dotted"; // default
public static const SOLID:String = "solid";
public static const NONE:String = "none";

public function TreeItemLinesRenderer() {
super();
}

override public function set data(value:Object):void {
super.data = value;
}

override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w, h);

if ((w > 0) && (h > 0)) {
// go up the hierarchy, drawing the vertical dotted lines for each node
var tree:Tree = (owner as Tree);
var desc:ITreeDataDescriptor = tree.dataDescriptor;
var currentNode:Object = data;
var parentNode:Object = tree.getParentItem(currentNode);
// the level is zero at this node, then increases as we go up the tree
var levelsUp:int = 0;

var lineStyle:String = getStyle("solid");
var lineColor:uint = getColorStyle("lineColor", 0x808080);
var lineAlpha:Number = getNumberStyle("lineAlpha", 1);
var lineThickness:Number = getNumberStyle("lineThickness", 1);
var indentation:Number = tree.getStyle("indentation");

// move the icon and label over to make room for the lines (less for root nodes)
var shift:int = (parentNode == null ? 2 : 6) + lineThickness;
if (icon) {
icon.move(icon.x + shift, icon.y);
}
if (label) {
label.move(label.x + shift, label.y);
}

var g:Graphics = graphics;
g.clear();

if ((lineStyle != NONE) && (lineAlpha > 0) && (lineThickness > 0)) {
while (parentNode != null) {
var children:ICollectionView = desc.getChildren(parentNode);
if (children is IList) {
var itemIndex:int = (children as IList).getItemIndex(currentNode);
// if this node is the last child of the parent
var isLast:Boolean = (itemIndex == (children.length - 1));
drawLines(g, w, h, lineStyle, lineColor, lineAlpha, lineThickness, isLast, levelsUp, indentation);

// go up to the parent, increasing the level
levelsUp++;
currentNode = parentNode;
parentNode = tree.getParentItem(parentNode);
} else {
break;
}
}
}
}
}

protected function drawLines(g:Graphics, w:Number, h:Number, lineStyle:String, lineColor:uint,
lineAlpha:Number, lineThickness:Number, isLastItem:Boolean, levelsUp:int, indentation:Number):void {
var midY:Number = Math.round(h / 2);
var lineX:Number = 0;
if (disclosureIcon) {
lineX = disclosureIcon.x + (disclosureIcon.width / 2);
} else if (icon) {
lineX = icon.x - 8;
} else if (label) {
lineX = label.x - 8;
}
lineX = Math.floor(lineX) - int(lineThickness / 2);
// adjust the x position based on the indentation
if (levelsUp > 0) {
if (!isNaN(indentation) && (indentation > 0)) {
lineX = lineX - (levelsUp * indentation);
} else {
// Invalid indentation style value
return;
}
}
var lineY:Number = h;
// stop the dotted line halfway on the last item
if (isLastItem) {
lineY = midY;
// no lines need to be drawn for parents of the last item
if (levelsUp > 0) {
return;
}
}

g.lineStyle(0, 0, 0);
if (lineStyle == SOLID) {
g.beginFill(lineColor, lineAlpha);
} else {
var verticalDottedLine:BitmapData = createDottedLine(lineColor, lineAlpha, lineThickness, true);
g.beginBitmapFill(verticalDottedLine);
}

// draw the vertical line
g.drawRect(lineX, 0, lineThickness, lineY);
// end the fill and start it again otherwise the lines overlap and it create white squares
g.endFill();

// draw the horizontal line - only needed on this node (not on any parents)
if (levelsUp == 0) {
var startX:int = lineX + 1 + int(lineThickness / 2);
var endX:int = startX + 11; // 5 dots
if (isLastItem) {
startX = lineX;
}
var startY:Number = midY - int(lineThickness / 2);
if (lineStyle == SOLID) {
g.beginFill(lineColor, lineAlpha);
} else {
var horizontalDottedLine:BitmapData = createDottedLine(lineColor, lineAlpha, lineThickness, false);
g.beginBitmapFill(horizontalDottedLine);
}
g.drawRect(startX, startY, endX - startX, lineThickness);
g.endFill();
}

}

/**
* Creates a BitmapData that is used to renderer a dotted line.
* If the vertical parameter is true, then it creates a rectangle bitmap that is
* twice as long as it is wide (lineThickness). Otherwise it creates a rectangle
* that is twice as wide as it is long.
* The first half of the rectangle is filled with the line color (and alpha value),
* then second half is transparent.
*/
private function createDottedLine(lineColor:uint, lineAlpha:Number, lineThickness:Number,
vertical:Boolean = true):BitmapData {
var w:Number = (vertical ? lineThickness : 2 * lineThickness);
var h:Number = (vertical ? 2 * lineThickness : lineThickness);
var color32:uint = combineColorAndAlpha(lineColor, lineAlpha);
var dottedLine:BitmapData = new BitmapData(w, h, true, 0x00ffffff);
// create a dotted bitmap
for (var i:int = 0; i < lineThickness; i++) {
for (var j:int = 0; j < lineThickness; j++) {
dottedLine.setPixel32(i, j, color32);
}
}
return dottedLine;
}

/**
* Combines the color value and the alpha value into a 32 bit uint like #AARRGGBB.
*/
private function combineColorAndAlpha(color:uint, alpha:Number):uint {
// make sure the alpha is a valid number [0-1]
if (isNaN(alpha)) {
alpha = 1;
} else {
alpha = Math.max(0, Math.min(1, alpha));
}

// convert the [0-1] alpha value into [0-255]
var alphaColor:Number = alpha * 255;
// bitshift it to come before the color
alphaColor = alphaColor << 24;
// combine the two values: #AARRGGBB
var combined:uint = alphaColor | color;
return combined;
}

private function getColorStyle(propName:String, defaultValue:uint):uint {
var color:uint = defaultValue;
if (propName != null) {
var n:Number = getStyle(propName);
if (!isNaN(n)) {
color = uint(n);
}
}
return color;
}


private function getNumberStyle(propName:String, defaultValue:Number):Number {
var number:Number = defaultValue;
if (propName != null) {
var n:Number = getStyle(propName);
if (!isNaN(n)) {
number = n;
}
}
return number;
}

}
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产亚洲精品精华液| 欧美亚洲成人免费| 亚洲无亚洲人成网站77777| 国产精品伦理久久久久久| 亚洲成人在线| 国产成人精品一区二区| 精品一区二区久久久久久久网站| 免费观看成年人视频在线观看| 国产亚洲精品久久久久久牛牛| 国产欧美日韩综合精品| 在线免费a视频| 黄色av地址| 欧美激情aⅴ一区二区三区| 国产精品人人爽| 欧美日韩视频在线观看一区二区三区| 性欧美videos粗暴| 国产精品久久久久久久久毛片| 中国1级黄色片| 精品一区二区三区自拍图片区| 亚洲国产精品成人久久综合一区| 午夜免费久久久久| 日本免费久久| www.91在线播放| 亚洲大胆人体av| 色呦色呦色精品| 欧美亚洲一区二区三区| 亚洲国产日韩成人综合天堂| 成人国产亚洲精品a区天堂华泰| 制服丝袜av成人在线看| 国产日产欧美视频| h网站在线看| 亚洲视频网站在线观看| 欧美人体一区二区三区| 韩国福利视频一区| 成年人的黄色片| 丰满人妻妇伦又伦精品国产| 好吊日免费视频| 日日操免费视频| 婷婷成人综合| 欧美日韩国产色站一区二区三区| 黄色毛片免费看| 粉嫩av一区二区三区在线播放| 亚洲精品国产欧美在线观看| 亚洲免费视频在线观看| 高清国产午夜精品久久久久久| 国产视频123区| 一本色道久久hezyo无码| 无码人妻久久一区二区三区蜜桃| 夜色福利资源站www国产在线视频| 日韩欧乱色一区二区三区在线| 国产精品久久久久久久久久免费| 欧美r片在线| 欧美成人精品一区二区三区| 国产91亚洲精品一区二区三区| 国内av免费| 中文字幕第五页| 91精品国产91久久久久久久久| 免费精品视频一区二区三区| 老司机aⅴ毛片免费观看| 日韩色在线观看| 欧美成人一区二区三区四区| 四虎影视精品永久在线观看| 久久久久久亚洲av无码专区| 国产精品大陆在线观看| 涩涩网站在线观看| 国产精久久一区二区三区| 色狠狠久久aa北条麻妃| 亚洲天堂网一区| 欧美日韩黄色| 国产精品免费无遮挡| 激情六月天婷婷| www.色婷婷.com| 亚洲人成电影在线| 国产天堂av在线| 日韩精品免费电影| 亚洲美女视频一区| 久久9999久久免费精品国产| 自拍视频在线免费观看| 亚洲伊人网在线观看| 亚洲三级电影全部在线观看高清| 成人午夜看片网址| h片在线观看下载| 国产免费一区二区三区在线观看| 免费国产h视频在线观看86| 亚洲欧美在线一区二区| 在线不卡国产精品| 国产精品久久a| 国产片在线播放| 99热6这里只有精品| 污污污污污污www网站免费| 亚洲精品老司机| 农村寡妇一区二区三区| 五月天婷婷视频| sis001亚洲原创区| 黄色大片中文字幕| 国产一级片一区二区| 欧美午夜精品理论片| 欧美一区二区三区在线免费观看| 婷婷六月综合| 国产老头老太做爰视频| 欧美日韩在线观看首页| 蜜臀av国内免费精品久久久夜夜| 国产精品成人久久久| 国产小视频在线看| a毛片在线看免费观看| 在线www天堂网在线| 亚洲精品成人无限看| 国产精品久久9| 午夜在线电影亚洲一区| 国产欧美一区二区精品久久久| 精品国产不卡| 91麻豆国产视频| 欧美大片免费播放器| 国产精品69久久久| 2017天天干夜夜操| 中文字幕影片免费在线观看| 日韩欧乱色一区二区三区在线| 欧美狂野激情性xxxx在线观| 国产探花一区二区三区| 久久久亚洲高清| 欧美性猛交ⅹxxx乱大交免费| 欧美日韩色综合| 青椒成人免费视频| 国产精品麻豆成人av电影艾秋| 69影院欧美专区视频| 欧美美女一区二区三区| 日本高清不卡的在线| 日韩美女av在线| 国产伦精品一区二区三区视频金莲| 羞羞视频在线观看免费| 91se在线| 午夜免费在线观看精品视频| 成人天堂资源www在线| 国产欧美日韩在线观看视频| 免费在线一级视频| 91视频免费在观看| 午夜剧场高清版免费观看| 欧美肥婆xxxx欧美另类| 91在线视频免费看| 嫩草成人www欧美| 亚洲精品一区二区三区四区五区| 91野花视频| xxxxx成人.com| 欧美日韩一区二区三区在线| 操欧美女人视频| 欧美在线性视频| 国产精品特级毛片一区二区三区| 99热这里只有精品7| 婷婷激情四射网| 久久免费视频99| 国内精品免费一区二区三区| 国产精品亚洲欧美| 在线观看中文字幕视频| 一区二区三区毛片免费| 色av成人天堂桃色av| 99久久人妻精品免费二区| 日韩一级片在线播放| 欧洲美一区二区三区亚洲| 91电影91视频| 91亚洲精品久久久蜜桃| 天堂精品久久久久| 久久精品国产一区二区三区日韩| 天堂国产一区二区三区| 国产精选久久久久久| 久久久久国内| 久久久999国产| 老子影院午夜伦不卡大全| 九一在线免费观看| 91aaa精品| 国产精品国产福利国产秒拍| 狠狠色综合网站久久久久久久| 久久精品夜色噜噜亚洲a∨| 亚欧洲精品视频| 97一区二区三区| 欧美激情久久久久久| 日韩中文字幕| 久久久久久免费精品| 欧美亚洲国产怡红院影院| 欧美制服第一页| 天天草夜夜草| 成人免费高清在线观看| 久久午夜剧场| 国产成人a级片| 一色屋精品亚洲香蕉网站| 欧美日本二区| 久久亚洲图片| 一道本无吗一区| 国产一区高清| 沈樵精品国产成av片| 全国男人的天堂天堂网| 国产精品国内免费一区二区三区| 日本中文字幕视频一区| 最新欧美色图| 老太做爰xxxx| 91精品黄色片免费大全| 99久久精品免费看国产小宝寻花| 色视频www在线播放国产人成| 日韩影院在线观看| 国产一级二级在线观看| 国产成一区二区| 欧美色老女人| 郴州新闻综合频道在线直播| 久久精品国产99久久6| 欧美在线免费播放| 亚洲图片小说综合| 女人天堂av在线播放| 日韩国产精品视频| 亚洲美女免费在线| 国产精品私人影院| 91九色丨porny丨肉丝| 欧洲一区二区在线| 久久国产亚洲| 欧美午夜不卡影院在线观看完整版免费| 你懂的视频在线免费| 精品产品国产在线不卡| 久久综合99re88久久爱| 亚洲成人一二三| 国产精品白丝久久av网站| 国产成人日日夜夜| 亚洲男女毛片无遮挡| 精品亚洲一区二区三区| 国产精品免费一区二区三区都可以| 欧美综合天天夜夜久久| jvid福利在线一区二区| 亚洲在线www| 久久99精品久久久久久园产越南| 国产欧美精品在线| 亚洲av无码一区二区三区网址| 一本久道久久综合中文字幕| 亚洲综合网狠久久| 黄色片网站在线观看| 精品一区二区日韩| 秋霞午夜鲁丝一区二区老狼| 国产精品美女在线| 午夜视频在线免费看| 欧美日韩成人激情| 人妻av中文系列| 日本人妖在线| 国产超碰精品在线观看| 日韩风俗一区 二区| 国产精品冒白浆免费视频| 人妻中文字幕一区二区三区| 欧美成人精品xxx| 天堂√中文最新版在线| 肉大捧一出免费观看网站在线播放| 亚洲网址你懂得| 成人精品一区二区三区免费| 无遮挡又爽又刺激的视频| 亚洲熟女www一区二区三区| 亚洲成人一二三区| 日韩精品第一页| 国产99视频精品免视看7| 欧美女优在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 69精品久久久| 日本电影免费看| 黑人精品一区| 精品国产乱码久久久久久浪潮| 好吊操视频这里只有精品| www.av中文字幕| 激情亚洲另类图片区小说区| 日韩精品久久久久久久酒店| 毛片基地网站| 精品亚洲va在线va天堂资源站| 成在在线免费视频| 日韩黄色视屏| 99久久婷婷国产综合精品电影√| 国产成人午夜高潮毛片| 国内外成人激情免费视频| 开心久久婷婷综合中文字幕| 毛片在线看网站| 中文字幕精品一区二区精品绿巨人| 国产精品免费一区| 欧美乱大交xxxxx另类电影| 国产熟女精品视频| 国产精品欧美韩国日本久久| 玖玖玖免费嫩草在线影院一区| 中国免费黄视频| av黄色免费网站| 色网站免费观看| 337p亚洲精品色噜噜| 日本一区二区三级电影在线观看| 中文字幕在线视频第一页| 无码人妻精品一区二区中文| 欧美aaaaaaaa牛牛影院| 二吊插入一穴一区二区| 色欲色香天天天综合网www| 2024亚洲男人天堂| 狠狠躁狠狠躁视频专区| 国产模特av私拍大尺度| 亚洲日本在线a| 精品久久久久中文慕人妻| 久久免费在线观看| 中文字幕av在线| 成人动漫在线视频| 亚洲一级理论片| 亚洲第一导航| 精品国偷自产一区二区三区| 精品1区2区在线观看| 久久99国产精品久久| 成人毛片一区二区三区| 国产探花精品一区二区| 日本片在线看| 国产精品免费视频一区| 久久久久久久蜜桃| 国产精品一区在线观看| 欧美吻胸吃奶大尺度电影| 在线精品国精品国产尤物884a| 一本之道久久| 精品成人一区二区三区免费视频| 国产精品爽黄69| 欧美一区二区视频在线观看2022| 综合网在线视频| 97激碰免费视频| 免费裸体视频网站| 日日噜噜夜夜狠狠视频| 亚洲美女色禁图| 亚洲国产精品尤物yw在线观看| chinese少妇国语对白| 无需播放器亚洲| 麻豆免费版在线观看| 欧美情侣在线播放| 成人一区而且| 国产不卡一二三区| 国产午夜精品一区理论片| 50度灰在线观看| 特级西西人体4444xxxx| 国产精品一品二区三区的使用体验|