`
china34420
  • 浏览: 136421 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

自定义右键菜单(加载xml文件)

阅读更多
通过加载外部xml文件的数据,自定义右键菜单。

xml文件(setup.xml)
<?xml version="1.0" encoding="UTF-8"?>
<shell>
	<menu>
		<item url="http://www.baidu.com">访问 百度</item>
		<item url="http://www.google.com.hk">访问 谷歌</item>
	</menu>
</shell>


文档类menuItem.as
package {
	import flash.display.Sprite;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.xml.*;
	import flash.net.navigateToURL
	import flash.events.ContextMenuEvent;
	import flash.ui.*;

	/**
	 * ...
	 * 文档类
	 * @author zkl
	 * 2010-9-13 16:45
	 */
	public class menuItem extends Sprite {
		private var _xml:XML;

		private var _urlLoad:URLLoader;

		private var _url:URLRequest;

		private var _myMenu:ContextMenu = new ContextMenu;

		private var _menu:String;

		private var _menus:Array;

		public function menuItem():void {
			init();
		}

		private function init():void {

			//加载xml文件
			_xml = new XML;
			_xml.ignoreWhite = true;
			_url = new URLRequest("setup.xml");
			_urlLoad = new URLLoader(_url);

			//加载完成
			_urlLoad.addEventListener(Event.COMPLETE, loadComplete)
		}

		private function loadComplete(e:Event):void {
			_urlLoad.removeEventListener(Event.COMPLETE, loadComplete)
			_xml = XML(_urlLoad.data)

			//隐藏默认菜单
			_myMenu.hideBuiltInItems();
			//分析xml文件,将菜单放置在_menus数组
			_menus = new Array;
			for (var s:String in _xml.menu.item){
				var obj:Object = new Object;
				obj.name = _xml.menu.item[s];
				obj.url = _xml.menu.item[s].@url;
				_menus.push(obj);
				//添加自定义的右键菜单
				var customMenu:ContextMenuItem = new ContextMenuItem(obj.name)
				customMenu.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuHandler);
				_myMenu.customItems.push(customMenu);
			}
			contextMenu = _myMenu;

			//释放内存
			_xml = null;
			_urlLoad = null;

		}

		private function menuHandler(e:ContextMenuEvent):void {
			navigateToURL(new URLRequest(_menus[_myMenu.customItems.indexOf(e.target)].url), "_blank");
		}


	}

}
分享到:
评论

相关推荐

    自定义Flex右键菜单

    在IT行业中,自定义Flex右键菜单是一项常见的需求,它涉及到用户交互体验的优化和界面定制化。Flex是一个基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。在这里,我们主要探讨如何在Flex项目中...

    Flex 实现右键菜单

    这段代码会阻止默认的右键菜单弹出,为我们的自定义右键菜单提供空间。 接下来,我们将构建自定义的右键菜单。在Flex中,我们可以使用`ContextMenu`类来创建菜单,而`ContextMenuItem`类则用于创建菜单项。如果需要...

    dhtmlxtree 的右键菜单

    **dhtmlxtree 右键菜单详解** dhtmlxtree 是一个流行的JavaScript库,用于创建交互式的树形数据结构,广泛应用于网站和Web应用程序中,用于展示层次化的信息。其强大的功能之一是支持右键菜单,这使得用户可以通过...

    右键菜单Silverlight

    Silverlight,作为微软推出的一种基于浏览器的交互式媒体和应用程序开发平台,同样支持自定义和实现右键菜单功能。在本篇文章中,我们将深入探讨如何在Silverlight中创建和使用右键菜单。 首先,了解Silverlight的...

    ext带右键菜单的树

    在描述中提到的"ext带右键菜单的树"是指在ExtJS中实现的一种交互功能,即在树形控件上通过右键点击来显示一个上下文菜单。这种功能极大地提高了用户与应用程序的交互性,使得操作更加直观和便捷。 在ExtJS中,树形...

    为netbeans的文本组件添加右键菜单功能的插件

    NetBeans平台基于模块化系统,每个插件都是一个独立的模块,通过Java类和XML文件定义其功能。创建一个新的插件项目通常涉及以下步骤: 1. **设置新项目**: 使用NetBeans IDE的"New Project"向导,选择"Java with ...

    树形菜单,带右键功能,数据库读取

    当用户在树形菜单的某个节点上右击时,阻止默认的浏览器上下文菜单,然后显示自定义的右键菜单。这个菜单可以是弹出层或者浮动元素,根据需求添加不同的操作选项。 4. **数据库读取**:使用AJAX(Asynchronous ...

    dTree+JQuery右键菜单(增删改)

    在这个案例中,"dTree+JQuery右键菜单(增删改)"是一个结合了JavaScript库dTree和jQuery实现的功能增强,特别是针对树形结构数据的管理。dTree是一款轻量级的JavaScript库,用于创建交互式的树形菜单,而jQuery则是...

    treeview右键添加删除节点,并保存节点到xml里面

    在VS 2005中实现右键菜单,我们需要为TreeView添加一个上下文菜单(ContextMenuStrip)。这可以通过以下步骤完成: 1. 在设计视图中选择TreeView控件,然后在属性窗口中找到`ContextMenuStrip`属性。 2. 点击省略号...

    WPF TreeView1 双击新增节点 到TreeView2中,右键菜单删除TreeView2子节点

    总结来说,这个项目主要涉及了WPF中`TreeView`的使用,包括数据绑定、事件处理(如双击和右键菜单)以及对`TreeView`节点的添加和删除操作。通过结合XAML和C#代码,我们可以构建出一个交互式的用户界面,允许用户...

    vc解析xml文件添加到TreeCtrl添加删除修改比较例子

    本项目可能使用了MSXML库中的IXMLDOMDocument接口,通过加载XML文件,然后遍历其节点,获取和操作XML数据。 2. **CtreeCtrl控件**: CtreeCtrl是MFC(Microsoft Foundation Classes)库中用于创建树型视图控件的类...

    android自定义菜单

    在Android开发中,自定义组件是一项重要的技能,它允许开发者根据需求创建独特的用户...文件"MenuDemo"很可能是这个过程的一个示例实现,进一步的代码分析和调试可以帮助你更好地理解和掌握这个自定义菜单的实现方式。

    TreeView显示XML文件

    首先,加载XML文件: ```csharp XDocument xml = XDocument.Load("path_to_your_xml_file.xml"); ``` 接下来,我们需要一个递归函数来构建TreeView节点。这个函数接受一个XElement作为参数,创建对应的TreeNode,...

    C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中

    7. 加载XML:在程序启动时,读取XML文件并恢复先前的设置。遍历XML节点,根据每个Column元素的属性设置相应的列。 通过以上步骤,我们可以实现一个功能完善的自定义列显示和顺序设置系统。这样的功能不仅提高了用户...

    FastFolders-实现右键快速访问硬盘

    通过右键菜单集成,用户可以大大提高文件管理和导航的效率。这个工具的主要目标是简化日常文件操作,使得用户无需频繁地打开我的电脑或资源管理器来寻找需要的文件夹。 在"FastFolders"中,你可以自定义一系列常用...

    ListView案例两个,右击菜单+排序

    要实现这一功能,你需要在清单文件`AndroidManifest.xml`中为对应的Activity添加`android:contextMenu="com.example.yourpackage.ContextMenu"`属性。接着,在Activity中重写`onCreateContextMenu`方法,创建菜单项...

    eclipse反编译XML插件

    为了安装"EasyExplore RinzoXML",只需要将下载的压缩包解压后,将里面的文件复制到Eclipse的"plugins"目录下,然后重启Eclipse,插件就会自动加载并出现在Eclipse的工具栏或者右键菜单中,供用户随时使用。...

    自定义文件夹栏目 自定义搜索管理器 信息条提示(Infotip) 得到BMP文件大小 DLL,EXE文件的文件导入表IAT 其他类型的外壳扩展

    开发过程中,需要编写XML文件定义搜索属性,并通过注册表进行配置,实现对系统搜索功能的扩展。 信息条提示(Infotips)是Windows资源管理器中的一个实用特性,当鼠标悬停在文件或文件夹上时,会显示一个小提示框,...

    ajax动态加载树,支持动态刷新

    4. 添加右键菜单:dhtmlxMenu可以用于创建上下文菜单,我们可以为树的节点添加右键点击事件,显示自定义的菜单。 ```javascript var menu = new dhtmlXMenuObject({ parent: "menuDiv", skin: "dhx_skyblue", ...

    Sharepoint ECB菜单

    - 特性(Features)文件夹:定义自定义功能的XML文件,用于在SharePoint环境中激活和配置。 - 列表定义(ListDefinitions)或列表实例(ListInstances):用于定义自定义列表或库的结构,包括ECB菜单的配置。 - ...

Global site tag (gtag.js) - Google Analytics