package com.pgworld.util { import com.yahoo.astra.fl.containers.VBoxPane; import flash.display.Bitmap; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.display.Shape; import flash.display.Sprite; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.ColorMatrixFilter; import flash.filters.DropShadowFilter; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFormatAlign; /** * @author gan */ public class SpriteUtil { public static function clearSprite(v : DisplayObjectContainer) : void { if (v == null) return; var obj : DisplayObject; while (v.numChildren > 0) { obj = v.getChildAt(0); v.removeChild(obj); obj = null; } } public static function getTextFilter() : BitmapFilter { return new GlowFilter(0x000000, 1, 2, 2, 10, 1, false, false); } public static function getDropShadowFilter(color : Number = 0x000000, angle : Number = 45, alpha : Number = 0.8, blurX : Number = 3, blurY : Number = 3, distance : Number = 8, strength : Number = 0.65, inner : Boolean = false, knockout : Boolean = false) : Array { var quality : Number = BitmapFilterQuality.HIGH; var myFilters : Array = new Array(); myFilters.push(new DropShadowFilter(distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout)); return myFilters } public static function glowFilter(t : TextField) : void { var filter : GlowFilter = new GlowFilter(0xf2fc89, .5, 1.1, 1.1, 10, 1, false, false); var filters : Array = t.filters; filters.push(filter); t.filters = filters; } public static function getXButton13(_x : int, _y : int, name : String) : XButton13 { var xbutton13 : XButton13 = new XButton13(); xbutton13.x = _x; xbutton13.y = _y; xbutton13.label = name; return xbutton13; } public static function proceesChild(container : DisplayObjectContainer) : void { if (container == null) { return; } var length : uint = container.numChildren; for (var i : int = 0;i < length;i++) { if (container.getChildAt(i) is DisplayObjectContainer) { var displayObjectContainer : DisplayObjectContainer = container.getChildAt(i) as DisplayObjectContainer; proceesChild(displayObjectContainer); displayObjectContainer = null; } else if (container.getChildAt(i) is Bitmap) { var bm : Bitmap = container.getChildAt(i) as Bitmap; if (bm.bitmapData) { bm.bitmapData.dispose(); bm = null; } } else if (container.getChildAt(i) is DisplayObject) { var displayObject : DisplayObject = container.getChildAt(i) as DisplayObject; displayObject = null; } } SpriteUtil.clearSprite(container); } public static function remove(displayObj : DisplayObject) : void { if (displayObj == null) return; var parent : DisplayObjectContainer = displayObj.parent; if (parent == null) return; // if(!parent.contains(displayObj))return; // 注释by water 查找会找自己和子集,没必要 displayObj.parent.removeChild(displayObj); displayObj = null; } public static function goFront(displayObj : DisplayObject) : void { var container : DisplayObjectContainer = displayObj.parent; if (container == null) { return; } var topPosition : uint = container.numChildren - 1; container.setChildIndex(displayObj, topPosition); } public static function goBack(displayObj : DisplayObject) : void { var container : DisplayObjectContainer = displayObj.parent; if (container == null) { return; } var bottomPosition : uint = 0; container.setChildIndex(displayObj, bottomPosition); } public static function randRange(min : Number, max : Number) : Number { var randomNum : Number = Math.floor(Math.random() * (max - min + 1)) + min; return randomNum; } public static var contentText : TextField; public static function getScrollPane(_x : int, _y : int, _w : int, _h : int) : VBoxPane { var vboxPane : VBoxPane = vBoxPane(_x, _y, _w, _h); // // var format : TextFormat = new TextFormat(); // format.font = "宋体"; // format.size = 12; // format.color = 0xffffff; // format.align = TextFormatAlign.LEFT; // // contentText = new TextField(); // contentText.setTextFormat(format); // contentText.width = vboxPane.width-20; // contentText.multiline = true; // contentText.wordWrap = true; // contentText.height = 3000; // contentText.htmlText = _name; // contentText.height = contentText.bottomScrollV * 16; // contentText.selectable = false; // // vboxPane.addChild(contentText); return vboxPane; } public static function getTextField(_w : int) : TextField { var format : TextFormat = new TextFormat(); format.font = "宋体"; format.size = 12; format.color = 0xffffff; format.align = TextFormatAlign.LEFT; format.leading = 10; var contentText : TextField = new TextField(); contentText.setTextFormat(format); contentText.width = _w; contentText.multiline = true; contentText.wordWrap = true; contentText.height = 3000; // contentText.height = contentText.bottomScrollV * 16; contentText.selectable = false; return contentText; } private static function vBoxPane(_x : int, _y : int, _w : int, _h : int) : VBoxPane { var vboxPane : VBoxPane = new VBoxPane; SpriteUtil.setScrollPaneStyle(vboxPane); vboxPane.setStyle("upSkin", new Sprite); vboxPane.move(_x, _y); vboxPane.width = _w; vboxPane.height = _h; vboxPane.horizontalScrollPolicy = "off"; vboxPane.paddingBottom = 10; vboxPane.paddingTop = 0; return vboxPane; } public static function convertColor(displayObj : DisplayObject, r : Array = null, g : Array = null, b : Array = null, a : Number = 0) : void { r = r == null ? [1, 0, 0] : r; g = g == null ? [0, 1, 0] : g; b = b == null ? [0, 0, 1] : b; // r:Array=[1,0,0],g:Array=[0,1,0],b:Array=[0,0,1] var matrix : Array = new Array(); matrix = matrix.concat([r[0], r[1], r[2], 0, -100]); matrix = matrix.concat([g[0], g[1], g[2], 0, -100]); matrix = matrix.concat([b[0], b[1], b[2], 0, -100]); matrix = matrix.concat([0, 0, 0, 1 + a, 0]); var filter : BitmapFilter = new ColorMatrixFilter(matrix); displayObj.filters = new Array(filter); } public static function clearBitMap2(_displayObject : DisplayObject) : void { if (_displayObject == null) return; var bitmap : Bitmap = _displayObject as Bitmap; if (bitmap != null) { if (bitmap.bitmapData != null) { bitmap.bitmapData.dispose(); bitmap.bitmapData = null; } if (bitmap.parent != null) { bitmap.parent.removeChild(bitmap); } bitmap = null; } } public static function clearBitMap(_displayObject : DisplayObject) : void { var bitmap : Bitmap = _displayObject as Bitmap; if (bitmap != null) { if (bitmap.bitmapData != null) { bitmap.bitmapData.dispose(); bitmap.bitmapData = null; } // if(bitmap.parent != null) { // bitmap.parent.removeChild(bitmap); // } bitmap = null; } } public static function getSpread(w : Number, h : Number, color : Array, alpha : Array, ratios : Array, gradientType : String = "linear", spreadMethod : String = "pad") : Sprite { var myShap : Shape = new Shape(); var sp : Sprite = new Sprite(); var type : String = gradientType; var matrix : Matrix = new Matrix(); var boxWidth : Number = w; var boxHeight : Number = h; var boxRotation : Number = Math.PI / 2; matrix.createGradientBox(boxWidth, boxHeight, boxRotation, 0, 0); myShap.graphics.beginGradientFill(type, color, alpha, ratios, matrix, spreadMethod); myShap.graphics.drawRect(0, 0, w, h); myShap.graphics.endFill(); sp.addChild(myShap); return sp; } public static function getName(s : String) : String { switch(s) { case "zb": return "装备:(Z)"; case "cw": return "宠物:(P)"; case "bb": return "背包:(B)"; case "jn": return "技能:(S)"; case "ln": return "琅嬛:(L)"; case "dw": return "组队:(T)"; case "hy": return "好友:(F)"; case "bh": return "帮派:(G)"; case "rw": return "任务:(Q)"; default: return ""; } } // 移除 public static function removeAllChild(contaner : DisplayObjectContainer) : void { var num : int = contaner.numChildren; if (num > 0) { for (var i : int = num; i > 0; i--) { contaner.removeChildAt(i - 1); num--; } } } /* * 获得一个矩形,可以用于TAB的选中状态 added by yong */ public static function getRect(wid : int, hei : int) : Sprite { var sp : Sprite = new Sprite(); sp.graphics.lineStyle(1, 0XCABB19); sp.graphics.drawRect(0, 0, wid, hei); return sp; } // 滚动条 public static function setScrollPaneStyle(scrollPane : *) : void { scrollPane.setStyle("upArrowUpSkin", XScrollArrowUp_upSkin); scrollPane.setStyle("upArrowOverSkin", XScrollArrowUp_overSkin); scrollPane.setStyle("upArrowDownSkin", XScrollArrowUp_downSkin); scrollPane.setStyle("upArrowDisabledSkin", XScrollArrowUp_disabledSkin); scrollPane.setStyle("downArrowDisabledSkin", XScrollArrowDown_disabledSkin); scrollPane.setStyle("downArrowUpSkin", XScrollArrowDown_upSkin); scrollPane.setStyle("downArrowOverSkin", XScrollArrowDown_overSkin); scrollPane.setStyle("downArrowDownSkin", XScrollArrowDown_downSkin); scrollPane.setStyle("trackUpSkin", XScrollTrack_skin); scrollPane.setStyle("trackOverSkin", XScrollTrack_skin); scrollPane.setStyle("trackDownSkin", XScrollTrack_skin); scrollPane.setStyle("trackDisabledSkin", XScrollTrack_skin); scrollPane.setStyle("thumbUpSkin", XScrollThumb_upSkin); scrollPane.setStyle("thumbOverSkin", XScrollThumb_overSkin); scrollPane.setStyle("thumbIcon", XScrollBar_thumbIcon); scrollPane.setStyle("thumbDownSkin", XScrollThumb_downSkin); scrollPane.setStyle("thumbDisabledSkin", XScrollThumb_upSkin); } // cellRebderer的style public static function setRedererPaneStyle(renderStyle : *) : void { renderStyle.setRendererStyle("upSkin", ListCellRenderer_upSkin); renderStyle.setRendererStyle("selectedUpSkin", ListCellRenderer_selectedUpSkin); renderStyle.setRendererStyle("downSkin", ListCellRenderer_downSkin); renderStyle.setRendererStyle("selectedDownSkin", ListCellRenderer_selectedDownSkin); renderStyle.setRendererStyle("overSkin", ListCellRenderer_overSkin); renderStyle.setRendererStyle("selectedOverSkin", ListCellRenderer_selectedOverSkin); renderStyle.setRendererStyle("disabledSkin", ListCellRenderer_disabledSkin); renderStyle.setRendererStyle("selectedDisabledSkin", ListCellRenderer_selectedDisabledSkin); } /* * 变灰色 */ public static function setGray(disobject : DisplayObject) : void { // _activeEquipId_long = 0; var redLuminance : Number = 0.212671; var greenLuminance : Number = 0.715160; var blueLuminance : Number = 0.072169; var grayscaleFilter : ColorMatrixFilter = new ColorMatrixFilter(new Array(redLuminance, greenLuminance, blueLuminance, 0, 0, redLuminance, greenLuminance, blueLuminance, 0, 0, redLuminance, greenLuminance, blueLuminance, 0, 0, 0, 0, 0, 1, 0)); var filters : Array = new Array(); filters.push(grayscaleFilter); if (disobject != null) { disobject.filters = filters; } } /* * 恢复有色 */ public static function setColor(disobject : DisplayObject) : void { if (disobject != null) { disobject.filters = null; } } // 方式为终止时间(到某年某月某时某分) public static function getFullTimeString(playerSeconds : int) : String { var date : Date = new Date(); date.setTime((playerSeconds + 1000000000) * 1000); // (playerSeconds+L1000000000)*1000 var formatter : DateFormat = new DateFormat("Y-m-d H:i:s"); return formatter.format(date); } public static function getTimeString(playerSeconds : int) : String { var playerMinutes : int = playerSeconds / 60 ; // 计算分钟 var hour : int = playerMinutes / 60 ; // 计算剩余小时 var minutes : int = playerMinutes - hour * 60 ; // 计算剩余分钟 // var seconds:int=playerSeconds-(hour*60*60+minutes*60) // 计算剩余秒 var str : String = ""; if (hour > 0) { str = hour + "小时"; } if (minutes > 0) { str += minutes + "分钟"; } // if(seconds>0){ // str += seconds+"秒" // } return str; } /** * 改变高亮状态 * @param highlight 是否高亮 */ public static function setHighlight(displayobject : DisplayObject, highlight : Boolean) : void { var tran : ColorTransform; if ( highlight ) { tran = new ColorTransform(1, 1, 1, 1, 50, 50, 50, 0); displayobject.transform.colorTransform = tran; } else { tran = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0); displayobject.transform.colorTransform = tran; tran = null; } } } }