最近开始研究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
MatlabGUI使用java组件无所不能-uicomponent.m 是不是曾经想做出漂亮的GUI 界面? 是不是曾经想在 Matlab GUI里面显示网页? 看看这个界面: matlab_java.png 所以,...
以及可复用性,尽可能让组件能够在不同的场景下被复用。 总之,UIComponent是现代Web开发中的重要组成部分,它结合HTML、CSS和JavaScript,为构建响应式、动态且易于维护的用户界面提供了强大的工具。UIComponent-...
2. **编写AS3代码**:在ActionScript中实现组件的逻辑,这包括定义组件类,继承自基类(如UIComponent或SimpleButton),并添加事件处理程序、属性和方法。 3. **处理布局和尺寸**:自定义组件需要处理自身和子对象...
9. **工具支持**:JSF开发工具有助于简化组件开发,如NetBeans、Eclipse等IDE,它们提供了对JSF的支持,包括自动生成组件类和标签文件。 10. **最佳实践**:博主可能分享了一些编写高效、可维护自定义组件的技巧和...
相比之下,高级组件往往需要更深层次的定制,包括更改组件的可视化外观、创建复合组件或将多个组件组合在一起等。 ##### 2. 组件的实现 - **实现步骤**: - **继承现有类**:要创建高级组件,可以考虑继承现有的...
在这种背景下,重写Flex组件变得尤为关键。 1. **解决业务需求**:当现有Flex组件的功能或样式不足以满足项目的特殊需求时,如自定义一个按钮组件以支持长文本自动换行的功能,就需要对其进行重写。 2. **模块化...
2. **继承UIComponent**:为了让非可视化组件能在MXML中使用,它需要继承`mx.core.UIComponent`。这样,即使组件本身没有可视元素,它仍然可以作为MXML文档的子节点。 3. **暴露属性和方法**:为了在MXML中访问和...
Flex自定义组件是指开发者根据项目需求,通过继承已有的Flex基类(如UIComponent或Canvas),并添加特定功能和样式来创建的组件。自定义组件可以扩展Flex库中默认组件的功能,提高代码重用性和灵活性。 1. 组件创建...
同时,也可以定义组件的样式,允许外部改变组件的外观。 4. **实现组件逻辑**:在ActionScript类中,覆盖父类的方法来实现组件的行为。这可能包括初始化、渲染、事件处理等过程。 5. **处理布局**:如果组件需要...
- **组件类(Component Class)**:这是自定义组件的核心,实现了`javax.faces.component.UIComponent`接口,定义了组件的行为和属性。 - **渲染器类(Renderer Class)**:负责将组件的模型数据转换为实际的HTML或...
Flex中的高级自定义组件开发是构建复杂用户界面的关键技术,它允许开发者超越基本组件的限制,以满足特定的业务需求和视觉设计。在创建高级组件时,了解并掌握一些核心方法的重写至关重要,这些方法涉及到组件的生命...
Flex提供了丰富的组件库,这些组件都继承自一个基础组件类,称为UIComponent。通过使用这些组件,开发者可以快速创建复杂的用户界面,而无需从头编写底层代码。 在Flex中,MXML是一种声明式标记语言,它允许开发者...
这个类通常会继承自Flash的内置组件类,如UIComponent或Button。在类中,你可以添加属性、方法和事件处理程序,以便控制组件的行为。 3. **绑定组件和图形**:通过使用“转换为符号”功能,将舞台上的图形转换为一...
- **高级组件**则需要进行更多的定制工作,包括但不限于更改组件的外观、创建复合组件(组合多个现有组件)或是直接继承`UIComponent`类来构建全新的组件。 2. **继承方式**: - 如果需要创建基于某个现有组件的...
5. **样式和皮肤**:Flex支持丰富的样式系统,你可以定义组件的默认样式,并允许用户通过样式表进行自定义。此外,组件还可以使用皮肤来改变其外观,皮肤可以是静态的图像,也可以是动态的组件实例。 6. **测试和...
自定义组件通常由两部分组成:UI组件(UIComponent)和渲染器(Renderer)。UIComponent定义了组件的行为和属性,而Renderer则负责将组件呈现为HTML或其他客户端格式。在JSF中,自定义组件类需要继承自`javax.faces...
自定义组件可以支持JSF的国际化特性,通过资源库文件提供多语言的标签和提示信息。 9. **性能优化** 在开发自定义组件时,考虑性能优化是至关重要的。避免不必要的计算,合理使用缓存,以及优化渲染过程都是提升...