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

  • 相关阅读:
    GIT 旧库迁移到新库
    Spring Data JPA入门
    (一)《Spring实战》——Spring核心
    easyui框架Date日期类型以json形式显示到前台datagrid时,显示为[object Object]
    《小狗钱钱》笔记——脑图
    ORACLE 两个表或两个结果集的数据对比常用的函数
    SyntaxError: Non-ASCII character 'xe5' in file index.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    报表查询:收费汇总表
    项目启动时 Exception in thread "HouseKeeper" java.lang.NullPointerException
    eval函数处理JSON数据需要加括号
  • 原文地址:https://www.cnblogs.com/lweinking/p/3811966.html
Copyright © 2020-2023  润新知