displayMergedTile(tilePrefix, mergedTilePartId, boardX, boardY, offsetX, offsetY, color, rotation) {
    // get tile class
    const tileMapMergedSpriteClassName = RSX[`${tilePrefix}0${mergedTilePartId}`].frame;
    const tileMapMergedSpriteClass = this._tileMapMergedSpriteClassesByName[tileMapMergedSpriteClassName];
    if (tileMapMergedSpriteClass == null) {
      throw new Error(`TileLayer.displayMergedTile -> invalid tileMapMergedSpriteClassName ${tileMapMergedSpriteClassName}`);
    }

    const tileSprite = tileMapMergedSpriteClass.create();
    const tileSize = tileSprite._contentSize.width;
    const offsetSize = tileSize * 0.5;
    const tileScale = (CONFIG.TILESIZE * 0.5) / tileSize;
    const tilePosition = UtilsEngine.transformBoardToScreen(cc.p(boardX, boardY));
    tilePosition.x += (offsetX || 0) * offsetSize * tileScale;
    tilePosition.y += (offsetY || 0) * offsetSize * tileScale;
    tileSprite.setPosition(tilePosition);
    tileSprite.setScale(tileScale);
    tileSprite._merged_rotation = rotation;
    tileSprite.setRotation(rotation || 0);
    if (color) {
      tileSprite._merged_color = color;
      tileSprite.setColor(color);
    }

    return tileSprite;
  }
Displays one part of a merged tile from a tile prefix and merged tile part identifier.
@param {String} tilePrefix
@param {String} mergedTilePartId
@param {Number} boardX
@param {Number} boardY
@param {Number} [offsetX=0]
@param {Number} [offsetY=0]
@param {Object} [color]
@param {Number} [rotation=0]
@returns {cc.Node} tile sprite