⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aqualook.as

📁 太烦了
💻 AS
📖 第 1 页 / 共 5 页
字号:
class pseudo.look.AquaLook implements pseudo.look.ILabelLook,
	pseudo.look.IEditLook, pseudo.look.IWindowManagerLook
{
	private var m_clrHighlight:Number;
	private var m_clrHilightText:Number;
	private var m_clrBtnText:Number;
	private var m_clrBtnHover:Number;
	private var m_clrBtnPressed:Number;
	private var m_clrCellOver:Number;
	private var m_clrCellOut1:Number;
	private var m_clrCellOut2:Number;
	private var m_clrCellPress:Number;
	private var m_data:Object;
	private var m_strThemeId:String;

	static private var m_instance:pseudo.look.AquaLook = null;

	//
	// PUBLIC METHODS
	//
	static public function getInstance():pseudo.look.AquaLook
	{
		if(!m_instance) m_instance = new pseudo.look.AquaLook();
		return m_instance;
	}

	public function setData(data:Object):Void
	{
		m_data = data;
		m_strThemeId = m_data.getAttr("default");
		var arrThemes:Array = data.getNodes("theme");
		for(var i:Number = 0; i , arrThemes.length; i++)
			if(arrThemes[i].getAttr("id") == m_strThemeId)
			{
				fromXML(arrThemes[i]);
				break;
			}
	}

	public function getId():String
	{
		return m_data.getAttr("id");
	}

	public function isSameTheme(xmlTheme:XML):Boolean
	{
		var xmlCurTheme:XML = toXML();
		return xmlCurTheme.attributes.id == xmlTheme.attributes.id;
	}

	//
	// CONTENT METHODS (begin)
	//
	public function fillContent(movie:MovieClip, ctrls:Object):Void
	{
		movie.addListener("update", this, onUpdateContent);
		var list:MovieClip = movie.addItem(ctrls.List, "list", 1);
		list.setCellClass(ctrls.CellRenderer);
		list.addListener("changed", this, onChangeTheme, list);
		list.setData({border:6});
		var arrListData:Array = new Array();
		var arrXMLThemes:Array = m_data.getNodes("theme");
		var nSelId:Number = -1;
		for(var i:Number = 0; i < arrXMLThemes.length; i++)
		{
			arrListData.push(({data:arrXMLThemes[i], text:arrXMLThemes[i].getAttr("name")}));
			if(arrXMLThemes[i].getAttr("id") == m_strThemeId) nSelId = i;
		}
		list.setListData(arrListData);
		list.setSelCell(nSelId);
	}

	private function onUpdateContent(movie:MovieClip, nW:Number, nH:Number):Void
	{
		var list:MovieClip = movie.getItem("list");
		list.setSize(nW, nH);
	}

	private function onChangeTheme(list:Object):Void
	{
		var data:Object = list.getSelData().data;
		fromXML(data);
		_global.themesManager.setLook(this);
		_global.main.update();
		_global.main.draw();
	}

	public function setThemeId(strId:String):Void
	{
		var arrXMLThemes:Array = m_data.getNodes("theme");
		for(var i:Number = 0; i < arrXMLThemes.length; i++)
			if(arrXMLThemes[i].getAttr("id") == strId)
			{
				fromXML(arrXMLThemes[i]);
				break;
			}
	}

  public function toXML():XML
  {
    var xml:XML = new XML();
		var node:XMLNode = xml.createElement("theme");
		node.attributes.id = m_strThemeId;
		xml.appendChild(node);
    return xml.childNodes[0];
  }

	public function fromXML(data:Object):Void
	{
		m_strThemeId = data.getAttr("id");
	}

	public function getThemeId():String
	{
		return m_strThemeId;
	}

	//
	// CONTENT METHODS (end)
	//

	public function getIconPath(strIcon:String):String
	{
		switch(strIcon)
		{
			case "newForum":
				return "themes/stdLook_new_forum.swf";
			case "oldForum":
			case "newUser":
				return "themes/stdLook_new_user.swf";
			case "forgotPass":
				return "themes/stdLook_forgot_pass.swf";
			case "search":
				return "themes/stdLook_search.swf";
			case "members":
				return "themes/stdLook_members.swf";
			case "groups":
				return "themes/stdLook_groups.swf";
			case "profile":
				return "themes/stdLook_profile.swf";
			case "private_messages":
				return "themes/stdLook_private_messages.swf";
			case "themes":
				return "themes/stdLook_themes.swf";
			case "faq":
				return "themes/stdLook_faq.swf";
			case "chat":
				return "themes/stdLook_chat.swf";
			case "stats":
				return "themes/stdLook_stats.swf";
			case "about":
				return "themes/stdLook_about.swf";
			case "iconWarning":
				return "themes/stdLook_iconWarning.swf";
			case "iconInfo":
				return "themes/stdLook_iconInfo.swf";
			case "iconQuestion":
				return "themes/stdLook_iconQuestion.swf";
			case "iconError":
				return "themes/stdLook_iconError.swf";
			case "contentPreloader":
				return "themes/stdLook_contentPreloader.swf";
		}
		return null;
	}

	public function getCursorPath(strCursor:String):String
	{
		switch(strCursor)
		{
			case "diagResize1":
				return "themes/stdLook_diagResize1.swf";
			case "horzResize":
				return "themes/stdLook_horzResize.swf";
			case "vertResize":
				return "themes/stdLook_vertResize.swf";
		}
		return null;
	}

	public function getCursors():Array
	{
		return new Array("diagResize1", "horzResize", "vertResize");
	}

	//
	// IBaseLook implementation
	//
	public function getBorder(strBorder:String, data:Object):Number
	{
		var nBorderPos:Number = 0;
		switch(strBorder)
		{
			case "top": nBorderPos = 1; break;
			case "left": nBorderPos = 2; break;
			case "bottom": nBorderPos = 4; break;
			case "right": nBorderPos = 8; break;
		}
		switch(data.type)
		{
			case "main":
			case "titledIconButton":
			case "url":
			case "gallery":
				return 0;
			case "resizeTitle":
				return 1;
			default:
				return (data.border == undefined || data.border == null) || data.border & nBorderPos ? 1 : 0;
		}
		return 0;
	}

	public function getMargin(strMargin:String, data:Object):Number
	{
		var nMargin:Number = 0;
		var strType:String = data.type;
		switch(data.className)
		{
			case "WindowTitle":
				strType = "titleBtnBack";
				break;
			case "Label":
				switch(strType)
				{
					case "edit":
					case "textArea":
					case "comboBoxTitle":
					case "info":
						break;
					//case "titleBtnBack":
					//case "resizeTitle":
					default:
						strType = "label";
						break;
				}
				break;
		}
		switch(strType)
		{
			case "main":
				nMargin = 5;
				break;
			case "cell":
				nMargin = 2 + getBorder(strMargin, data);
				break;
			case "titleBtnBack":
				switch(strMargin)
				{
					case "right": nMargin = 8 + getBorder(strMargin, data); break;
					case "left": nMargin = 8 + getBorder(strMargin, data); break;
					case "top":
					case "bottom":
						nMargin = 1 + getBorder(strMargin, data);
						break;
				}
				break;
			case "resizeTitle":
				switch(strMargin)
				{
					case "left": nMargin = 8 + getBorder(strMargin, data); break;
					case "right": nMargin = 23 + getBorder(strMargin, data); break;
					case "top":
					case "bottom":
						nMargin = 2 + getBorder(strMargin, data);
						break;
				}
				break;
			case "edit":
			case "textArea":
			case "comboBoxTitle":
			case "info":
				nMargin = strMargin == "left" || strMargin == "right" ? 2 : 0;
				break;
			case "label":
				nMargin = 0;
				break;
			case "gallery":
				nMargin = 5 + getBorder(strMargin, data);
				break;
			case "titledIconButton":
			case "url":
				break;
			case "cellThread":
				nMargin = getBorder(strMargin, data) + 3;
				break;
			case "checkbox":
				nMargin = getBorder(strMargin, data) + (strMargin == "left" ? 14 : 0);
				break;
			default:
				nMargin = getBorder(strMargin, data);
				break;
		}
		return nMargin;
	}

	public function updateMask(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		movie.clear();
		pseudo.Global.drawRect(movie, 0, 0, nW, nH);
	}

	public function draw(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
	{
		switch(data.className)
		{
			case "ComboBox":
				drawComboBox(movie, nW, nH, data);
				break;
			case "TextArea":
			case "Button":
				drawButton(movie, nW, nH, data);
				break;
			case "Pane":
			case "List":
				drawPane(movie, nW, nH, data);
				break;
			case "Label":
				drawLabel(movie, nW, nH, data);
				break;
			case "TitledIcon":
				drawIconLayer(movie, nW, nH, data);
				break;
			case "Main":
				drawMain(movie, nW, nH, data);
				break;
			case "CellText":
			case "CellIconText":
				drawCellText(movie, nW, nH, data);
				break;
			case "CellTree":
				drawCellTree(movie, nW, nH, data);
				break;
			case "CellThread":
				drawCellThread(movie, nW, nH, data);
				break;
			default:
				drawMovie(movie, nW, nH, data);
				break;
		}
	}

	public function getTextFormat(data:Object):TextFormat
	{
		var tf:TextFormat = new TextFormat();
		switch(data.type)
		{
			//case "label":
			//case "edit":
			default:
				tf.color = m_clrBtnText;
				tf.size = 12;
				tf.font = "Tahoma";
				break;
		}
		return tf;
	}

	public function getTextDecoration(strType:String, data:Object):String
	{
		var strRes:String = "";
		switch(strType)
		{
			case "open":
				switch(data.type)
				{
					case "cellThread":
						strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>" +
							(data.mode == "name" ? "<b>" : "");
						break;
					case "label":
					case "edit":
					case "info":
					case "textArea":
					case "comboBoxTitle":
					case "checkbox":
					case "cellText":
					case "cellIconText":
						strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>";
						break;
					case "cellTree":
						strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='"
							+ (data.cellType == 1 ? "12" : "11") + "'>";
						break;
					case "topTime":
						strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='16'><b>";
						break;
					case "comboBoxCell":
						switch(data.mode)
						{
							case "over":
							case "press":
								strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrHilightText) + "' face='Tahoma' size='12'>";
								break;
							//case "out":
							default:
								strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>";
								break;
						}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -