Esempio n. 1
0
 /// <summary>
 /// 从资源文件中获取图片资源并返回精灵对象
 /// </summary>
 /// <param name="sourceName">资源名称</param>
 /// <param name="rtype">资源类型</param>
 /// <param name="cutRect">纹理切割矩</param>
 /// <returns>该资源的精灵</returns>
 private YuriSprite GetGraphicSprite(string sourceName, ResourceType rtype, Int32Rect? cutRect)
 {
     if (sourceName == "") { return null; }
     YuriSprite sprite = new YuriSprite();
     string DevURI = null, PackURI = null;
     // 处理路径
     switch (rtype)
     {
         case ResourceType.Background:
             DevURI = GlobalDataContainer.DevURI_PA_BACKGROUND;
             PackURI = GlobalDataContainer.PackURI_PA_BACKGROUND;
             break;
         case ResourceType.Stand:
             DevURI = GlobalDataContainer.DevURI_PA_CHARASTAND;
             PackURI = GlobalDataContainer.PackURI_PA_CHARASTAND;
             break;
         case ResourceType.Pictures:
             DevURI = GlobalDataContainer.DevURI_PA_PICTURES;
             PackURI = GlobalDataContainer.PackURI_PA_PICTURES;
             break;
         default:
             return null;
     }
     // 总是先查看是否有为封包的数据
     if (this.resourceTable.ContainsKey(DevURI) &&
         this.resourceTable[DevURI].ContainsKey(sourceName))
     {
         KeyValuePair<long, long> sourceLocation = this.resourceTable[DevURI][sourceName];
         byte[] ob = PackageUtils.GetObjectBytes(IOUtils.ParseURItoURL(PackURI + GlobalDataContainer.PackPostfix),
             sourceName, sourceLocation.Key, sourceLocation.Value);
         MemoryStream ms = new MemoryStream(ob);
         sprite.Init(sourceName, rtype, ms, cutRect);
     }
     // 没有封包数据再搜索开发目录
     else
     {
         string furi = IOUtils.JoinPath(GlobalDataContainer.DevURI_RT_PICTUREASSETS, DevURI, sourceName);
         if (File.Exists(IOUtils.ParseURItoURL(furi)))
         {
             Uri bg = new Uri(IOUtils.ParseURItoURL(furi), UriKind.RelativeOrAbsolute);
             sprite.Init(sourceName, rtype, bg, cutRect);
         }
         else
         {
             throw new Exception("文件不存在:" + sourceName);
         }
     }
     return sprite;
 }