Exemplo n.º 1
0
    public void  addTexture(string cacheTex, Object obj, CallBack <Object> callback)
    {
        if (string.IsNullOrEmpty(cacheTex))
        {
            return;
        }
        if (cacheDictionary == null)
        {
            cacheDictionary = new Dictionary <string, TextureLoaderNode> ();
        }
        if (nodeList == null)
        {
            nodeList = new List <TextureLoaderNode> ();
        }

        if (cacheDictionary.ContainsKey(cacheTex))
        {
            //如果有相同资源,下载好的推送,没下好就什么都不做

            cacheDictionary [cacheTex].addCallBack(obj, callback);

            if (cacheDictionary [cacheTex].resReady)
            {
                cacheDictionary [cacheTex].pushTexture(obj);
                //后期推送,推一个消一个
                cacheDictionary [cacheTex].callbackDic.Remove(obj);
            }

            //推到队列最后
            cacheDictionary [cacheTex].createTime = ServerTimeKit.getMillisTime();             //更新时间
            nodeList.Remove(cacheDictionary [cacheTex]);
            nodeList.Add(cacheDictionary [cacheTex]);

            return;
        }
        //走到这里说明队列里没有
        TextureLoaderNode newNode = new TextureLoaderNode();

        newNode.path       = cacheTex;
        newNode.createTime = ServerTimeKit.getMillisTime();
        newNode.addCallBack(obj, callback);
        cacheDictionary.Add(cacheTex, newNode);
        nodeList.Add(newNode);

        //http://img.immomo.com/album/C5/B2/C5B2E711-5A20-6009-1C74-293F61C0779E_S.jpg
        if (cacheTex.Length >= 7 && cacheTex.Substring(0, 7) == "http://")
        {
            newNode.isWebNode = true;
            //网路下载走这里
            StartCoroutine(loadImageFromWeb(cacheTex, newNode));
        }
        else
        {
            newNode.isWebNode = false;
            ResourcesManager.Instance.cacheData(cacheTex, newNode.cacheSingeFinish, "texture");
        }
    }
Exemplo n.º 2
0
 //返回true可删除
 bool checkNode(TextureLoaderNode node)
 {
     //20-秒保护时间内不删除
     if (node.createTime + MIN_DEADTIME <= ServerTimeKit.getMillisTime())
     {
         return(false);
     }
     else if (node.callbackDic.Count == 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 3
0
    IEnumerator loadImageFromWeb(string url, TextureLoaderNode node)
    {
        Debug.LogWarning("start downlaod:" + url);

        WWW www = new WWW(url);

        yield return(www);

        if (www.texture != null)
        {
            node.downloadFinish(www.texture);
        }
        else
        {
            Debug.LogWarning(" download fail  :");
            Debug.LogWarning(" www bytesDownloaded  :" + www.bytesDownloaded);
            Debug.LogWarning(" www progress  :" + www.progress);
            Debug.LogWarning(" www error  :" + www.error);
        }

        www.Dispose();
    }