//只留当前屏幕显示的几个瓦片,其余全部释放 public void Deactive() { if (!_isActive) { return; } try { TileIdentify[] visibleTiles; LevelDef suitableLevel; _tilesLocator.Compute(_canvas, out suitableLevel, out visibleTiles); if (visibleTiles == null) { return; } foreach (TileIdentify tile in visibleTiles) { TileBitmap tb = _tileCacheManager.Get(suitableLevel.LevelNo, tile.Row, tile.Col); if (tb != null) { _sleepTileCacheManager.Put(tb); _tileCacheManager.Remove(tb); } } } finally { SetToSleep(); _isActive = false; } }
private TileBitmap LoadTileBitmap(TileIdentify tile) { int beginRow = 0, beginCol = 0, width = 0, height = 0; LevelDef level = tile.Level; level.GetOriginalRowColByDataBlock(tile, ref beginRow, ref beginCol, ref width, ref height); TileBitmap tb = _dataProviderReader.CreateBitmapByTile(level, beginRow, beginCol, width, height, tile); if (!_disposed && tb != null) { _tileCacheManager.Put(tb); } return(tb); }
public void Active() { if (_isActive) { return; } try { CreateTileLoadWorker(); if (_sleepTileCacheManager.Count > 0) { foreach (TileBitmap tb in _sleepTileCacheManager.TileBitmaps.ToArray()) { _tileCacheManager.Put(tb); _sleepTileCacheManager.Remove(tb); } } ReLoadTileBitmapsBySync(_levels); } finally { _isActive = true; } }