示例#1
0
        public void addTask(string url, int resType, LoadFinishBack callback = null, Type types = null, int priority = 0, LoadFinishBack errorback = null)
        {
            if (okBackList.ContainsKey(url))
            {
                addFinishBack(url, callback);
                return;
            }

            if (ResPool.instance.hasLoadedRes(url))
            {//已加载
                callFinishBack(url);
                remove(url, okBackList);
                if (callback != null)
                {
                    callback(url);
                }
                return;
            }

            LoadItem item = new LoadItem();

            item.url      = url;
            item.types    = types;
            item.resType  = resType;
            item.priority = priority * MAX_OFFET_PRIORITY + offetPriority;
            offetPriority--;
            waitList.Add(item);
            if (!isLoading)
            {
                loadNext();
            }
        }
示例#2
0
        /**取消加载**/
        public void unloadRes(String url, LoadFinishBack callback)
        {
            if (StringUtils.isEmpty(url))
            {
                return;
            }
            if (!loadingList.ContainsKey(url))
            {
                return;
            }

            IList <LoadItem> list = loadingList[url];

            foreach (LoadItem item in list)
            {
                if (item.url.Equals(url) && item.callback == callback)
                {
                    binLoadMgr.unload(item);
                    list.Remove(item);
                    item.dispose();
                    break;
                }
            }

            if (list.Count < 1)
            {
                removeProgress(url);
                loadingList.Remove(url);
            }
        }
示例#3
0
 internal void dispose()
 {
     str       = null;
     url       = null;
     args      = null;
     www       = null;
     types     = null;
     callback  = null;
     errorback = null;
 }
示例#4
0
        /**加载资源
         * @param url       加载地址
         * @param resType   资源类型
         * @param callback  加载成功回调 callback(url,args)
         * @param priority  加载优先级,数字越大越早加载
         * @param errorback 加载失败回调 errorback(url,args)
         * @param args      其它参数
         */
        public bool loadRes(string url, int resType, LoadFinishBack callback = null, int priority = 0, LoadFinishBack errorback = null, object[] args = null)
        {
            if (StringUtils.isEmpty(url))
            {
                return(false);
            }
            //A-1 内存镜像已有
            if (ResPool.instance.hasLoadedRes(url))
            {
                if (binLoadMgr.isTrace)
                {
                    Log.info(this, "-loadRes() url:" + url + " 缓存已有!");
                }
                if (callback != null)
                {
                    callback(url, args);
                }
                return(true);
            }

            //A-2 不指定优先级,从默认配置项取
            if (priority < 1)
            {
                priority = typeConfigList.ContainsKey(resType) ? typeConfigList[resType] : ResPriority.LOW;
            }
            LoadItem item = new LoadItem();

            item.url       = url;
            item.args      = args;
            item.resType   = resType;
            item.priority  = priority;
            item.callback  = callback;
            item.errorback = errorback;
            if (loadingList.ContainsKey(url))
            {
                loadingList[url].Add(item);
            }
            else
            {
                loadingList.Add(url, new List <LoadItem>());
                loadingList[url].Add(item);
                binLoadMgr.addTask(item); // 这个很重要,将要下载的item 放进 BinLoadMgr 去排队下载;
            }
            if (binLoadMgr.isTrace)
            {
                Log.info(this, "-loadRes() url:" + url + " 已放入加载队列!");
            }
            return(true);
        }
示例#5
0
        private void addErrorBack(string url, LoadFinishBack errorback)
        {
            if (errorback == null)
            {
                return;
            }
            IList <LoadFinishBack> list = errorBackList.ContainsKey(url) ? errorBackList[url] : null;

            if (list == null)
            {
                list = new List <LoadFinishBack>();
                errorBackList.Add(url, list);
            }
            list.Add(errorback);
        }
示例#6
0
        private void addFinishBack(string url, LoadFinishBack callback)
        {
            if (callback == null)
            {
                return;
            }
            IList <LoadFinishBack> list = okBackList.ContainsKey(url) ? okBackList[url] : null;

            if (list == null)
            {
                list = new List <LoadFinishBack>();
                okBackList.Add(url, list);
            }
            list.Add(callback);
        }