Esempio n. 1
0
 /// <summary>
 /// 加载下一个,如果没有下一个,则完成本次队列加载
 /// </summary>
 /// <returns></returns>
 private bool LoadNext()
 {
     if (_currLoadIndex < _loaders.Count)
     {
         currLoader = _loaders[_urls[_currLoadIndex]];
         if (cacheMemory || !currLoader.urlLoader.HasNewVersion()) //需要缓存内存或者还没有加载
         {
             currLoader.urlLoader.onLoadComplete.AddEventListener(OnOneLoadCompleteHandler);
             currLoader.urlLoader.onLoadError.AddEventListener(OnOneLoadErrorHandler);
             FrameCall.DelayFrame(() =>//留一帧时间缓冲
             {
                 currLoader.urlLoader.Load();
             });
         }
         else
         {
             OnOneLoadCompleteHandler(currLoader.urlLoader);
         }
         return(true);
     }
     else
     {
         isLoading = false;
         onCompleteSignal.Dispatch(this);
         return(false);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// 某一个加载出错,如果在重试次数之内,则重新再次加载,否则抛出队列加载出错事件,终止本次加载(除非IgnoreError)
 /// </summary>
 /// <param name="obj"></param>
 private void OnOneLoadErrorHandler(ILoader obj)
 {
     if (currLoader.currRetry < currLoader.maxRetry)
     {
         currLoader.currRetry++;
         LoadNext();
     }
     else if (ignoreError)
     {
         if (!cacheMemory)
         {
             _loaders[_urls[_currLoadIndex]] = null;
         }
         if (_progressFrameCall != null)
         {
             _progressFrameCall.Run();
         }
         _progressFrameCall = null;
         _currLoadIndex++;
         LoadNext();
     }
     else
     {
         OnOneEndHandler(obj);
         isLoading = false;
         onErrorSignal.Dispatch(this);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// 某一个加载完成,尝试加载下一个资源
 /// </summary>
 /// <param name="obj"></param>
 private void OnOneLoadCompleteHandler(ILoader obj)
 {
     if (!cacheMemory)
     {
         _loaders[_urls[_currLoadIndex]] = null;
     }
     if (_progressFrameCall != null)
     {
         _progressFrameCall.Run();
     }
     _progressFrameCall = null;
     OnOneEndHandler(obj);
     _currLoadIndex++;
     LoadNext();
 }
Esempio n. 4
0
        /// <summary>
        /// 开始对add的资源进行加载
        /// </summary>
        public void Load()
        {
            isLoading = true;

            bool hasNext = LoadNext();

            if (hasNext)
            {
                _progressInOne = 1f / _loaders.Count;
                if (_progressFrameCall != null)
                {
                    _progressFrameCall.Run();
                }
                _progressFrameCall = FrameCall.Call(ScheduleUpdate);
            }
            else
            {
                onTotalScheduleSignal.Dispatch(1);
            }
        }