关于air文件拖入加载解析的两个问题

因需用到拖入加载问价解析,于是第一感觉就是想到了air,经网上查到代码如下:

public class Darg extends Sprite
    {
        public function Darg ()
        {
            if (stage) {
                creat();
            }else{
                addEventListener(Event.ADDED_TO_STAGE,creat);
            }
        }
        private var _sp:Sprite = new Sprite();
        private var _format:Array = [".jpg", ".JPG",".jpeg", ".JPEG", ".gif", ".GIF",".png",".swf",".PNG"];
        protected function creat(event:Event = null):void
        {
            _sp.graphics.beginFill(0xff0000,0.5);
            _sp.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
            _sp.graphics.endFill();
            addChild(_sp);
            stage.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,ondrop);
            stage.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,ondrop);
        }
       
        private var loader:Loader = new Loader;
        protected function ondrop(event:NativeDragEvent):void
        {
            //将拖入的文件以数组形式获得,指定拖入的数据是文件数组形式
            var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
            //获得拖入的第一个文件
            var file:File = File(files[0]);
            switch(event.type) {
                case NativeDragEvent.NATIVE_DRAG_ENTER:
                    if(_format.indexOf(file.type) != -1){
                        NativeDragManager.acceptDragDrop(this);
                    }
                    break;
                case NativeDragEvent.NATIVE_DRAG_DROP:
                    if(_format.indexOf(file.type) != -1){
                        //删除上一张加载的图片
                        loader.unload();
                        //加载拖入的图片
                        loader.load(new URLRequest(file.url));
                        removeChild(_sp);
                        addChild(loader);
                    }
                    break;
            }
        }

需要注意的两个问题:

1、舞台上必须有物,就是代码中为何要加个sprite的缘故;

2、必须addChild  而不能stage.addChild,即添加到当前场景上,而不是添加到底层舞台上。如果加在舞台上可以侦听到NATIVE_DRAG_ENTER 但是无 NATIVE_DRAG_DROP事件,至于具体原因没研究过了,如若有知道的,可以发表发表。

关于air文件拖入加载解析的两个问题,布布扣,bubuko.com

时间: 2024-10-16 01:34:44

关于air文件拖入加载解析的两个问题的相关文章

浏览器页面加载解析渲染机制(一)

mark一下zhq[2]. 前言:首先这个标题对我来说有不甚了解,这里引用了一些好的技文内容,分享一下我的一些理解,如果有说错的望评论里狠狠打脸,以共勉之. 一:为什么要了解浏览器渲染页面和加载页面机制,主要还是性能的优化. 了解浏览器如何进行加载,我们可以在引用外部样式文件,外部js时,将他们放到合适的位置,使浏览器以最快的速度将文件加载完毕. 了解浏览器如何进行解析,我们可以在构建DOM结构,组织css选择器时,选择最优的写法,提高浏览器的解析速率. 了解浏览器如何进行渲染,明白渲染的过程,

J2EE加载资源文件以及Spring加载XML文件

J2EE加载XML文件 Resource接口,是用来加载文件的接口. FileSystemResource和ClassPathResource都是实现了Resource接口,他们都可以用来加载XML文件. 具体代码如下: 1 Resource resource1 = new ClassPathResource("文件.xml"); 2 3 Resource resource2 = new FileSystemResource("盘符:/项目路径/src/文件.xml"

<script>标签的加载解析执行

转自原文 <script>标签的加载解析执行 看了很多网上的文章,都是大同小异.总结一下.内部原理还没有搞清楚,有机会再学习. 一.<script>标签的加载解析执行顺序 html页面中的<script>标签中的内容(直接写入或者引用外部文件都一样)是以顺序加载执行的,每个<script>标记内容可以当成一个独立的块,同步的情况下一个块加载解析然后执行完后才加载下一块.当然这时也会阻塞其他页面元素的加载.所以网上说的变量调用: <script type

浏览器加载解析渲染网页原理

浏览器加载网页资源的原理 JS与CSS阻塞 重排与重绘 一.浏览器加载网页资源的原理 1.HTML支持的组要资源类型 在浏览器内核有一个管理资源的对象CachedResource类,在CachedResource类下有很多子类来分工不同的资源管理,这些资源管理子类分别是:  资源  资源管理类  HTML  MainResource ===> CachedRawResource  JavaScript  CachedScript  CSS  CachedCSStyleSheet  图片  Cac

C# IO操作(五)文件的递归加载

本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下: 当点击“加载”按钮时,根据路径中的地址,加载该文件夹下所有的子文件夹和子文件,代码如下: 1 private void BtnLoad_Click(object sender, EventArgs e) 2 { 3 string sPath = txtPath.Text.Trim(); 4 LoadDirAndFile(sPath, tvList.Nodes); 5 } 6 7 private void LoadDirAn

Microsoft Excel 文件未完全加载

今天(具体说是昨天)处理一个90多M的csv文件,一打开,报错"文件未完全加载", 这什么情况啊,我还想另存为xlsx的,这样就可以导入SQL Server了!(Easy,我知道csv等平面文件也可以导入SQL Server) 我以为文件坏了呢,毕竟这么大,这么多年,第一次打开90多M的csv(excel)文件.重新打开还是一样的问题. 只好点击"显示帮助",才知道原因,原来excel的行列数不能超过1,048,576行和16,384列的限制.才想起是这个问题,ex

封装实现JavaScript 文件的动态加载功能

function loadScript(url, callback){ var script = document.createElement ("script") script.type = "text/javascript"; if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || scr

如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。

一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. 1 <script src="1.js"></script> 2 <script src="2.js"></script> 3 <script src="3.js">

c# 实现文件拖入和拖出(拖拽)

摘自:http://www.cnblogs.com/eaglet/archive/2009/01/06/1370149.html C# WinForm下一步一步实现文件的拖入和拖出 作者:Eaglet 在WinForm实现一个类似资源浏览器的功能,需要实现将WinForm中列出的文件拖出到其他应用程序中或者从其他应用程序中将文件拖入到Winform应用中.网上有一些文章介绍这种功能,但都比较零散,缺少一个完整的例子.为此我编写了一个较完整的实现文件拖入和拖出的例子,并撰写此文一步步讲解如果实现类