zoukankan      html  css  js  c++  java
  • 关于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事件,至于具体原因没研究过了,如若有知道的,可以发表发表。

  • 相关阅读:
    图片的通道数和卷积核的深度
    神经网络中使用Batch Normalization 解决梯度问题
    python3没有urllib2 出现报错:语法错误
    pip安装时ReadTimeoutError解决办法
    我的学习
    动态(不定长)数组初始化
    关于c中的一些新函数
    排序算法
    vc6.0批量加注释
    endnote的安装和使用必备的几个步骤(简单有效整理版)
  • 原文地址:https://www.cnblogs.com/lweinking/p/3811966.html
Copyright © 2011-2022 走看看