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事件,至于具体原因没研究过了,如若有知道的,可以发表发表。

  • 相关阅读:
    sqlserver2005转换到2000
    vs2008的注册
    给联想K46装系统
    两个调片技巧
    mapx集合的问题
    audio player播放多文件
    JQuery查询ul嵌套结构中当前所处的位置
    .Net中使用带UI的OCX的方法
    U盘启动和量产
    winrar的图标
  • 原文地址:https://www.cnblogs.com/lweinking/p/3811966.html
Copyright © 2011-2022 走看看