`
noahgenius
  • 浏览: 140409 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

AIR下让组件(UIComponent)支持外部文件拖入

阅读更多
最近开始研究AIR平台了,一边做多功能flv播放器一边实践API,收获颇多。
这里是其中一个功能分支,为组件添加文件拖入特性,过程大致如此:
  • 为UIComponent添加NativeDragEvent监听,主要是两个事件drag_enter和drop[*]当拖动一个文件进入(应该是drag_over吧)UIComponent时首先响应drag_enter事件,这时需要通知该UIComponent可以接受drop(run的时候会看到图标有变化的),不然不会有drop事件发出[*]鼠标释放,drop事件发出
这里还要提一下TransferableData,这个类是用来封装拖动对象的。

package models
{
	import mx.controls.*;
	import mx.core.UIComponent;
	import flash.events.NativeDragEvent;
	import flash.filesystem.File;
	import flash.desktop.*;
	
	public class CFileDragInSupport
	{
		private var uiComp:UIComponent;
		
		public function CFileDragInSupport(comp:UIComponent)
		{
			uiComp = comp;
			init();
		}
		
		private function init():void
		{
			uiComp.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, dragInHandler);
			uiComp.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDropHandler);
		}
		
		private function dragInHandler(eve:NativeDragEvent):void
		{
			if(eve.transferable.hasFormat(TransferableFormats.FILE_LIST_FORMAT))
			{
				DragManager.acceptDragDrop(uiComp);
			}
		}
		
		private function onDropHandler(eve:NativeDragEvent):void
		{
			var obj:TransferableData = eve.transferable;
			if(obj.hasFormat(TransferableFormats.FILE_LIST_FORMAT))
			{
				var files:Array = obj.dataForFormat(TransferableFormats.FILE_LIST_FORMAT) as Array;
				var file:File = files[0];
				doDragIn(file);
			}
		}
		
		protected function doDragIn(file:File):void
		{
			// override by child
		}
		
		
	}
}
分享到:
评论

相关推荐

    UIComponent.unitypackage

    UIComponent.unitypackage

    MatlabGUI使用java组件无所不能-uicomponent.m

    MatlabGUI使用java组件无所不能-uicomponent.m 是不是曾经想做出漂亮的GUI 界面? 是不是曾经想在 Matlab GUI里面显示网页? 看看这个界面: matlab_java.png 所以,...

    UIComponent

    以及可复用性,尽可能让组件能够在不同的场景下被复用。 总之,UIComponent是现代Web开发中的重要组成部分,它结合HTML、CSS和JavaScript,为构建响应式、动态且易于维护的用户界面提供了强大的工具。UIComponent-...

    as3自定义组件

    2. **编写AS3代码**:在ActionScript中实现组件的逻辑,这包括定义组件类,继承自基类(如UIComponent或SimpleButton),并添加事件处理程序、属性和方法。 3. **处理布局和尺寸**:自定义组件需要处理自身和子对象...

    编写JSF用户自定义UI组件(之五)

    9. **工具支持**:JSF开发工具有助于简化组件开发,如NetBeans、Eclipse等IDE,它们提供了对JSF的支持,包括自动生成组件类和标签文件。 10. **最佳实践**:博主可能分享了一些编写高效、可维护自定义组件的技巧和...

    ActionScript高级组件开发

    相比之下,高级组件往往需要更深层次的定制,包括更改组件的可视化外观、创建复合组件或将多个组件组合在一起等。 ##### 2. 组件的实现 - **实现步骤**: - **继承现有类**:要创建高级组件,可以考虑继承现有的...

    flex 重写组件

    在这种背景下,重写Flex组件变得尤为关键。 1. **解决业务需求**:当现有Flex组件的功能或样式不足以满足项目的特殊需求时,如自定义一个按钮组件以支持长文本自动换行的功能,就需要对其进行重写。 2. **模块化...

    非可视化组件(类)写的mxml中

    2. **继承UIComponent**:为了让非可视化组件能在MXML中使用,它需要继承`mx.core.UIComponent`。这样,即使组件本身没有可视元素,它仍然可以作为MXML文档的子节点。 3. **暴露属性和方法**:为了在MXML中访问和...

    Flex各自定义组件事件通讯例子

    Flex自定义组件是指开发者根据项目需求,通过继承已有的Flex基类(如UIComponent或Canvas),并添加特定功能和样式来创建的组件。自定义组件可以扩展Flex库中默认组件的功能,提高代码重用性和灵活性。 1. 组件创建...

    第五章 自定义组件开发 第一节 自定义Flex组件

    同时,也可以定义组件的样式,允许外部改变组件的外观。 4. **实现组件逻辑**:在ActionScript类中,覆盖父类的方法来实现组件的行为。这可能包括初始化、渲染、事件处理等过程。 5. **处理布局**:如果组件需要...

    创建JSF自定义组件

    - **组件类(Component Class)**:这是自定义组件的核心,实现了`javax.faces.component.UIComponent`接口,定义了组件的行为和属性。 - **渲染器类(Renderer Class)**:负责将组件的模型数据转换为实际的HTML或...

    flex 高级自定义组件

    Flex中的高级自定义组件开发是构建复杂用户界面的关键技术,它允许开发者超越基本组件的限制,以满足特定的业务需求和视觉设计。在创建高级组件时,了解并掌握一些核心方法的重写至关重要,这些方法涉及到组件的生命...

    Flex的组件

    Flex提供了丰富的组件库,这些组件都继承自一个基础组件类,称为UIComponent。通过使用这些组件,开发者可以快速创建复杂的用户界面,而无需从头编写底层代码。 在Flex中,MXML是一种声明式标记语言,它允许开发者...

    FLASH自定义组件

    这个类通常会继承自Flash的内置组件类,如UIComponent或Button。在类中,你可以添加属性、方法和事件处理程序,以便控制组件的行为。 3. **绑定组件和图形**:通过使用“转换为符号”功能,将舞台上的图形转换为一...

    用ActionScript 开发高级可视化组件

    - **高级组件**则需要进行更多的定制工作,包括但不限于更改组件的外观、创建复合组件(组合多个现有组件)或是直接继承`UIComponent`类来构建全新的组件。 2. **继承方式**: - 如果需要创建基于某个现有组件的...

    flex 自定义组件

    5. **样式和皮肤**:Flex支持丰富的样式系统,你可以定义组件的默认样式,并允许用户通过样式表进行自定义。此外,组件还可以使用皮肤来改变其外观,皮肤可以是静态的图像,也可以是动态的组件实例。 6. **测试和...

    JSF2.0实战 - 4、自定义组件

    自定义组件通常由两部分组成:UI组件(UIComponent)和渲染器(Renderer)。UIComponent定义了组件的行为和属性,而Renderer则负责将组件呈现为HTML或其他客户端格式。在JSF中,自定义组件类需要继承自`javax.faces...

    jsf 自定义组件开发

    自定义组件可以支持JSF的国际化特性,通过资源库文件提供多语言的标签和提示信息。 9. **性能优化** 在开发自定义组件时,考虑性能优化是至关重要的。避免不必要的计算,合理使用缓存,以及优化渲染过程都是提升...

Global site tag (gtag.js) - Google Analytics