Exemplo n.º 1
0
        public void LoadAsync(ResLoadInfo resLoadInfo)
        {
            if (resLoadInfo.mResPath == "")
            {
                AFLogger.e("资源路径为空,无法进行加载");
                return;
            }
            ResInfo resInfo = ResManager.Instance.GetRes(resLoadInfo);

            if (resInfo != null && resInfo.State == ResState.Ready && (resInfo.ResObject.IsNotNull() || resInfo.ResStr.IsNotNullAndEmpty()))
            {
                resLoadInfo.mListener.InvokeGracefully(true, resInfo);
            }
            else if (resInfo == null)
            {
                resInfo = ResFactory.Create(resLoadInfo);
                //加入队列
                if (resInfo.LoadAsync())
                {
                    ResManager.Instance.CacheResource(resLoadInfo.mResPath, resInfo);
                }
            }
            else
            {
                AFLogger.e("当前请求的资源正在加载,增加回调");
                //当前请求的资源正在加载,增加回调
                resInfo.RegisterListen(resLoadInfo.mListener);
            }
        }
Exemplo n.º 2
0
        public void LoadResAsyncForObj(ObjLoadInfo objLoadInfo)
        {
            ResInfo resInfo = ResManager.Instance.GetRes(objLoadInfo.mCRC);

            if (resInfo == null)
            {
                ResLoadInfo resLoadInfo = ResLoadInfo.Allocate(objLoadInfo);
                //资源没有加载
                LoadAsync(resLoadInfo);
                resLoadInfo.Recycle2Cache();
            }
            else if (resInfo.State != ResState.Ready)
            {
                //资源正在加载,是其他loader的异步加载
                resInfo.RegisterListen(objLoadInfo.loadResCall);
            }
            else
            {
                //资源已经加载完成,开始回调
                objLoadInfo.loadResCall(true, resInfo);
            }
        }