修复tiled中objectgroup塞image解析失败问题
@@ -1811,6 +1811,7 @@ declare module es {
|
|||||||
static renderLayerCamera(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
static renderLayerCamera(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
||||||
static renderImageLayer(layer: TmxImageLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderImageLayer(layer: TmxImageLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
static renderObjectGroup(objGroup: TmxObjectGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderObjectGroup(objGroup: TmxObjectGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
|
private static renderTilesetTile;
|
||||||
static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
static renderTile(tile: TmxLayerTile, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, tileWidth: number, tileHeight: number, color: egret.ColorMatrixFilter, layerDepth: number): void;
|
static renderTile(tile: TmxLayerTile, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, tileWidth: number, tileHeight: number, color: egret.ColorMatrixFilter, layerDepth: number): void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2712,7 +2712,7 @@ var es;
|
|||||||
this._areBoundsDirty = true;
|
this._areBoundsDirty = true;
|
||||||
};
|
};
|
||||||
RenderableComponent.prototype.isVisibleFromCamera = function (camera) {
|
RenderableComponent.prototype.isVisibleFromCamera = function (camera) {
|
||||||
this.isVisible = camera.bounds.intersects(this.bounds);
|
this.isVisible = camera.bounds.intersects(this.displayObject.getBounds().union(this.bounds));
|
||||||
return this.isVisible;
|
return this.isVisible;
|
||||||
};
|
};
|
||||||
RenderableComponent.prototype.setRenderLayer = function (renderLayer) {
|
RenderableComponent.prototype.setRenderLayer = function (renderLayer) {
|
||||||
@@ -8109,9 +8109,11 @@ var es;
|
|||||||
xFirstGid = xTileset["firstgid"];
|
xFirstGid = xTileset["firstgid"];
|
||||||
firstGid = xFirstGid;
|
firstGid = xFirstGid;
|
||||||
source = xTileset["image"];
|
source = xTileset["image"];
|
||||||
if (!!source) return [3, 2];
|
if (!(source != undefined)) return [3, 2];
|
||||||
source = map.tmxDirectory + source;
|
source = map.tmxDirectory + source;
|
||||||
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)];
|
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
xDocTileset = _a.sent();
|
xDocTileset = _a.sent();
|
||||||
tileset = this.loadTmxTileset(new es.TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
tileset = this.loadTmxTileset(new es.TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
||||||
@@ -8123,9 +8125,9 @@ var es;
|
|||||||
};
|
};
|
||||||
TiledMapLoader.loadTmxTileset = function (tileset, map, xTileset, firstGid) {
|
TiledMapLoader.loadTmxTileset = function (tileset, map, xTileset, firstGid) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var xImage, _a, _i, _b, e, _c, _d, xTile, tile, id, y, column, x;
|
var xImage, _a, _i, _b, e, _c, _d, _e, t, xTile, tile, id, y, column, x;
|
||||||
return __generator(this, function (_e) {
|
return __generator(this, function (_f) {
|
||||||
switch (_e.label) {
|
switch (_f.label) {
|
||||||
case 0:
|
case 0:
|
||||||
tileset.map = map;
|
tileset.map = map;
|
||||||
tileset.firstGid = firstGid;
|
tileset.firstGid = firstGid;
|
||||||
@@ -8140,10 +8142,12 @@ var es;
|
|||||||
xImage = xTileset["image"];
|
xImage = xTileset["image"];
|
||||||
if (!xImage) return [3, 2];
|
if (!xImage) return [3, 2];
|
||||||
_a = tileset;
|
_a = tileset;
|
||||||
return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory)];
|
return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
_a.image = _e.sent();
|
_a.image = _f.sent();
|
||||||
_e.label = 2;
|
_f.label = 2;
|
||||||
case 2:
|
case 2:
|
||||||
tileset.terrains = [];
|
tileset.terrains = [];
|
||||||
if (xTileset["terrains"])
|
if (xTileset["terrains"])
|
||||||
@@ -8152,23 +8156,28 @@ var es;
|
|||||||
tileset.terrains.push(this.parseTmxTerrain(e));
|
tileset.terrains.push(this.parseTmxTerrain(e));
|
||||||
}
|
}
|
||||||
tileset.tiles = new Map();
|
tileset.tiles = new Map();
|
||||||
_c = 0, _d = xTileset["tiles"];
|
_c = [];
|
||||||
_e.label = 3;
|
for (_d in xTileset["tiles"])
|
||||||
|
_c.push(_d);
|
||||||
|
_e = 0;
|
||||||
|
_f.label = 3;
|
||||||
case 3:
|
case 3:
|
||||||
if (!(_c < _d.length)) return [3, 6];
|
if (!(_e < _c.length)) return [3, 6];
|
||||||
xTile = _d[_c];
|
t = _c[_e];
|
||||||
|
if (!xTileset["tiles"].hasOwnProperty(t)) return [3, 5];
|
||||||
|
xTile = xTileset["tiles"][t];
|
||||||
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
|
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
|
||||||
case 4:
|
case 4:
|
||||||
tile = _e.sent();
|
tile = _f.sent();
|
||||||
tileset.tiles.set(tile.id, tile);
|
tileset.tiles.set(tile.id == undefined ? Number(t) + 1 : tile.id, tile);
|
||||||
_e.label = 5;
|
_f.label = 5;
|
||||||
case 5:
|
case 5:
|
||||||
_c++;
|
_e++;
|
||||||
return [3, 3];
|
return [3, 3];
|
||||||
case 6:
|
case 6:
|
||||||
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
||||||
tileset.tileRegions = new Map();
|
tileset.tileRegions = new Map();
|
||||||
if (tileset.image && tileset.image.bitmap) {
|
if (tileset.image) {
|
||||||
id = firstGid;
|
id = firstGid;
|
||||||
for (y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
for (y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
||||||
column = 0;
|
column = 0;
|
||||||
@@ -8180,8 +8189,8 @@ var es;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tileset.tiles.forEach(function (tile) {
|
tileset.tiles.forEach(function (tile, key) {
|
||||||
tileset.tileRegions.set(firstGid + tile.id, new es.Rectangle(0, 0, tile.image.width, tile.image.height));
|
tileset.tileRegions.set(key, new es.Rectangle(0, 0, tile.image.width, tile.image.height));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return [2, tileset];
|
return [2, tileset];
|
||||||
@@ -8368,28 +8377,26 @@ var es;
|
|||||||
};
|
};
|
||||||
TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
|
TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var xSource, _a, _b, _c, xData;
|
var xSource, texture;
|
||||||
return __generator(this, function (_d) {
|
return __generator(this, function (_a) {
|
||||||
switch (_d.label) {
|
switch (_a.label) {
|
||||||
case 0:
|
case 0:
|
||||||
xSource = xImage["image"];
|
xSource = xImage["image"];
|
||||||
if (!xSource) return [3, 2];
|
if (xSource != undefined) {
|
||||||
image.source = tmxDirectory + xSource;
|
image.source = tmxDirectory + xSource;
|
||||||
_a = image;
|
}
|
||||||
_c = (_b = egret.SpriteSheet).bind;
|
else {
|
||||||
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)];
|
image.source = tmxDirectory + xImage;
|
||||||
|
}
|
||||||
|
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
_a.bitmap = new (_c.apply(_b, [void 0, _d.sent()]))();
|
texture = _a.sent();
|
||||||
return [3, 3];
|
image.bitmap = new egret.SpriteSheet(texture);
|
||||||
case 2:
|
|
||||||
image.format = xImage["format"];
|
|
||||||
xData = xImage["data"];
|
|
||||||
image.data = es.TmxUtils.decode(xData, xData["encoding"], xData["compression"]);
|
|
||||||
_d.label = 3;
|
|
||||||
case 3:
|
|
||||||
image.trans = es.TmxUtils.color16ToUnit(xImage["trans"]);
|
image.trans = es.TmxUtils.color16ToUnit(xImage["trans"]);
|
||||||
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : 0;
|
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : texture.textureWidth;
|
||||||
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : 0;
|
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : texture.textureHeight;
|
||||||
return [2, image];
|
return [2, image];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -8557,54 +8564,7 @@ var es;
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.tile:
|
case es.TmxObjectType.tile:
|
||||||
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
this.renderTilesetTile(objGroup, obj, container, pos, scale, debugRender);
|
||||||
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
|
||||||
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
|
||||||
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
|
||||||
}
|
|
||||||
else if (obj.tile.horizontalFlip) {
|
|
||||||
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
}
|
|
||||||
else if (obj.tile.verticalFlip) {
|
|
||||||
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
|
||||||
}
|
|
||||||
if (container) {
|
|
||||||
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
|
||||||
if (!texture) {
|
|
||||||
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
|
||||||
}
|
|
||||||
tileset.image.texture = new Bitmap(texture);
|
|
||||||
container.addChild(tileset.image.texture);
|
|
||||||
if (tileset.image.texture.x != pos.x)
|
|
||||||
tileset.image.texture.x = pos.x;
|
|
||||||
if (tileset.image.texture.y != pos.y)
|
|
||||||
tileset.image.texture.y = pos.y;
|
|
||||||
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}
|
|
||||||
else if (obj.tile.verticalFlip) {
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}
|
|
||||||
else if (obj.tile.horizontalFlip) {
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}
|
|
||||||
if (tileset.image.texture.anchorOffsetX != 0)
|
|
||||||
tileset.image.texture.anchorOffsetX = 0;
|
|
||||||
if (tileset.image.texture.anchorOffsetY != 0)
|
|
||||||
tileset.image.texture.anchorOffsetY = 0;
|
|
||||||
debugRender(obj, pos);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.ellipse:
|
case es.TmxObjectType.ellipse:
|
||||||
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
@@ -8656,6 +8616,86 @@ var es;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
TiledRendering.renderTilesetTile = function (objGroup, obj, container, pos, scale, debugRender) {
|
||||||
|
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
|
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
|
if (container) {
|
||||||
|
if (tileset.image) {
|
||||||
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
tileset.image.texture.x = pos.x;
|
||||||
|
tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
debugRender(obj, pos);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var tilesetTile = tileset.tiles.get(obj.tile.gid);
|
||||||
|
var texture = tilesetTile.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tilesetTile.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
pos.y -= obj.height;
|
||||||
|
tilesetTile.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tilesetTile.image.texture);
|
||||||
|
tilesetTile.image.texture.width = obj.width;
|
||||||
|
tilesetTile.image.texture.height = obj.height;
|
||||||
|
tilesetTile.image.texture.x = pos.x;
|
||||||
|
tilesetTile.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tilesetTile.image.texture.anchorOffsetX = 0;
|
||||||
|
tilesetTile.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
TiledRendering.renderGroup = function (group, container, position, scale, layerDepth) {
|
TiledRendering.renderGroup = function (group, container, position, scale, layerDepth) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
if (!group.visible)
|
if (!group.visible)
|
||||||
|
|||||||
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 137 B |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,281 @@
|
|||||||
|
{ "backgroundcolor":"#3b97d3",
|
||||||
|
"height":26,
|
||||||
|
"layers":[
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"height":26,
|
||||||
|
"name":"background",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"gid":7,
|
||||||
|
"height":262.666666666667,
|
||||||
|
"id":11,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":1736,
|
||||||
|
"x":-256,
|
||||||
|
"y":920.666666666667
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":6,
|
||||||
|
"height":832,
|
||||||
|
"id":34,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":1216,
|
||||||
|
"x":122,
|
||||||
|
"y":810
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"width":38,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"height":26,
|
||||||
|
"name":"clouds",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"gid":8,
|
||||||
|
"height":61.3333333333333,
|
||||||
|
"id":14,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":184,
|
||||||
|
"x":640,
|
||||||
|
"y":320
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":8,
|
||||||
|
"height":61.3333333333333,
|
||||||
|
"id":17,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":184,
|
||||||
|
"x":336,
|
||||||
|
"y":144
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":8,
|
||||||
|
"height":61.3333333333333,
|
||||||
|
"id":21,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":192,
|
||||||
|
"x":1024,
|
||||||
|
"y":145
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":2147483656,
|
||||||
|
"height":61.3333333333333,
|
||||||
|
"id":23,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":184,
|
||||||
|
"x":44,
|
||||||
|
"y":136
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":6,
|
||||||
|
"height":600,
|
||||||
|
"id":8,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":954,
|
||||||
|
"x":-226,
|
||||||
|
"y":768
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":2147483654,
|
||||||
|
"height":546,
|
||||||
|
"id":35,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":826,
|
||||||
|
"x":710,
|
||||||
|
"y":782
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":2147483656,
|
||||||
|
"height":103.333333333333,
|
||||||
|
"id":36,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":284,
|
||||||
|
"x":926,
|
||||||
|
"y":307
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":8,
|
||||||
|
"height":103.333333333333,
|
||||||
|
"id":37,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":284,
|
||||||
|
"x":124,
|
||||||
|
"y":353
|
||||||
|
}],
|
||||||
|
"opacity":0.490000009536743,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"width":38,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"height":38,
|
||||||
|
"name":"title",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"gid":4,
|
||||||
|
"height":386,
|
||||||
|
"id":1,
|
||||||
|
"name":"logo",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":736,
|
||||||
|
"x":256,
|
||||||
|
"y":480
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"width":25,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"height":26,
|
||||||
|
"name":"help",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"gid":3,
|
||||||
|
"height":715.669407858419,
|
||||||
|
"id":26,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":745.251573276788,
|
||||||
|
"x":237.507948400548,
|
||||||
|
"y":739.425850721188
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":false,
|
||||||
|
"width":38,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"height":38,
|
||||||
|
"name":"buttons",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"gid":2,
|
||||||
|
"height":85.3333333333333,
|
||||||
|
"id":2,
|
||||||
|
"name":"start",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":256,
|
||||||
|
"x":485,
|
||||||
|
"y":655.333333333333
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid":1,
|
||||||
|
"height":64,
|
||||||
|
"id":3,
|
||||||
|
"name":"help",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":192,
|
||||||
|
"x":515.599635905335,
|
||||||
|
"y":761.206553703963
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"width":26,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
}],
|
||||||
|
"nextobjectid":38,
|
||||||
|
"orientation":"orthogonal",
|
||||||
|
"renderorder":"right-down",
|
||||||
|
"tileheight":32,
|
||||||
|
"tilesets":[
|
||||||
|
{
|
||||||
|
"columns":0,
|
||||||
|
"firstgid":1,
|
||||||
|
"margin":0,
|
||||||
|
"name":"ui",
|
||||||
|
"spacing":0,
|
||||||
|
"tilecount":7,
|
||||||
|
"tileheight":832,
|
||||||
|
"tiles":
|
||||||
|
{
|
||||||
|
"0":
|
||||||
|
{
|
||||||
|
"image":"buttonHelp.png"
|
||||||
|
},
|
||||||
|
"1":
|
||||||
|
{
|
||||||
|
"image":"buttonStart.png"
|
||||||
|
},
|
||||||
|
"2":
|
||||||
|
{
|
||||||
|
"image":"helpBackground.png"
|
||||||
|
},
|
||||||
|
"3":
|
||||||
|
{
|
||||||
|
"image":"title.png"
|
||||||
|
},
|
||||||
|
"5":
|
||||||
|
{
|
||||||
|
"image":"backgroundSet.png"
|
||||||
|
},
|
||||||
|
"6":
|
||||||
|
{
|
||||||
|
"image":"block.png"
|
||||||
|
},
|
||||||
|
"7":
|
||||||
|
{
|
||||||
|
"image":"cloud.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tilewidth":1232
|
||||||
|
}],
|
||||||
|
"tilewidth":32,
|
||||||
|
"version":1,
|
||||||
|
"width":38
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 12 KiB |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"keys": "checkbox_select_disabled_png,checkbox_select_down_png,checkbox_select_up_png,checkbox_unselect_png,selected_png,border_png,header_png,radiobutton_select_disabled_png,radiobutton_select_down_png,radiobutton_select_up_png,radiobutton_unselect_png,roundthumb_png,thumb_png,track_png,tracklight_png,handle_png,off_png,on_png,button_down_png,button_up_png,thumb_pb_png,track_pb_png,track_sb_png,bg_jpg,egret_icon_png,description_json,isometric_grass_and_water_json,orthogonal-outside_json",
|
"keys": "checkbox_select_disabled_png,checkbox_select_down_png,checkbox_select_up_png,checkbox_unselect_png,selected_png,border_png,header_png,radiobutton_select_disabled_png,radiobutton_select_down_png,radiobutton_select_up_png,radiobutton_unselect_png,roundthumb_png,thumb_png,track_png,tracklight_png,handle_png,off_png,on_png,button_down_png,button_up_png,thumb_pb_png,track_pb_png,track_sb_png,bg_jpg,egret_icon_png,description_json,isometric_grass_and_water_json,orthogonal-outside_json,title_json",
|
||||||
"name": "preload"
|
"name": "preload"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -155,6 +155,11 @@
|
|||||||
"url": "assets/orthogonal-outside.json",
|
"url": "assets/orthogonal-outside.json",
|
||||||
"type": "json",
|
"type": "json",
|
||||||
"name": "orthogonal-outside_json"
|
"name": "orthogonal-outside_json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "assets/title.json",
|
||||||
|
"type": "json",
|
||||||
|
"name": "title_json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -10,23 +10,26 @@ module scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async onStart() {
|
public async onStart() {
|
||||||
let mapData = await es.TiledMapLoader.loadTmxMap(new es.TmxMap(), "orthogonal-outside_json");
|
let mapData = await es.TiledMapLoader.loadTmxMap(new es.TmxMap(), "title_json");
|
||||||
let map = this.createEntity("map");
|
let map = this.createEntity("map");
|
||||||
let tiledMap = map.addComponent(new es.TiledMapRenderer(mapData)).setRenderLayer(1);
|
let tiledMap = map.addComponent(new es.TiledMapRenderer(mapData)).setRenderLayer(1);
|
||||||
console.log(mapData);
|
console.log(mapData);
|
||||||
|
|
||||||
let sprite = new es.Sprite(RES.getRes("checkbox_select_disabled_png"));
|
// let sprite = new es.Sprite(RES.getRes("checkbox_select_disabled_png"));
|
||||||
this.createEntityAsync("bg").then(bg => {
|
// this.createEntityAsync("bg").then(bg => {
|
||||||
bg.addComponent(new component.PlayerController());
|
// bg.addComponent(new component.PlayerController());
|
||||||
bg.addComponent(new es.Mover());
|
// bg.addComponent(new es.Mover());
|
||||||
let spriteRenderer = bg.addComponent(new es.ScrollingSpriteRenderer(sprite)).setRenderLayer(0);
|
// let spriteRenderer = bg.addComponent(new es.ScrollingSpriteRenderer(sprite)).setRenderLayer(0);
|
||||||
// spriteRenderer.scrollX = -30;
|
// // spriteRenderer.scrollX = -30;
|
||||||
// bg.addComponent(new es.BoxCollider());
|
// // bg.addComponent(new es.BoxCollider());
|
||||||
|
|
||||||
this.camera.follow(bg, es.CameraStyle.lockOn);
|
// this.camera.follow(bg, es.CameraStyle.lockOn);
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
this.camera.position = new es.Vector2(300, 265);
|
||||||
es.Core.debugRenderEndabled = true;
|
es.Core.debugRenderEndabled = true;
|
||||||
|
this.scaleX = 0.5;
|
||||||
|
this.scaleY = 0.5;
|
||||||
// // bg.addComponent(new es.SpriteRenderer()).setSprite(sprite).setColor(0xff0000);
|
// // bg.addComponent(new es.SpriteRenderer()).setSprite(sprite).setColor(0xff0000);
|
||||||
|
|
||||||
// for (let i = 0; i < 20; i++) {
|
// for (let i = 0; i < 20; i++) {
|
||||||
|
|||||||
@@ -1811,6 +1811,7 @@ declare module es {
|
|||||||
static renderLayerCamera(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
static renderLayerCamera(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
||||||
static renderImageLayer(layer: TmxImageLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderImageLayer(layer: TmxImageLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
static renderObjectGroup(objGroup: TmxObjectGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderObjectGroup(objGroup: TmxObjectGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
|
private static renderTilesetTile;
|
||||||
static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||||
static renderTile(tile: TmxLayerTile, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, tileWidth: number, tileHeight: number, color: egret.ColorMatrixFilter, layerDepth: number): void;
|
static renderTile(tile: TmxLayerTile, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, tileWidth: number, tileHeight: number, color: egret.ColorMatrixFilter, layerDepth: number): void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2712,7 +2712,7 @@ var es;
|
|||||||
this._areBoundsDirty = true;
|
this._areBoundsDirty = true;
|
||||||
};
|
};
|
||||||
RenderableComponent.prototype.isVisibleFromCamera = function (camera) {
|
RenderableComponent.prototype.isVisibleFromCamera = function (camera) {
|
||||||
this.isVisible = camera.bounds.intersects(this.bounds);
|
this.isVisible = camera.bounds.intersects(this.displayObject.getBounds().union(this.bounds));
|
||||||
return this.isVisible;
|
return this.isVisible;
|
||||||
};
|
};
|
||||||
RenderableComponent.prototype.setRenderLayer = function (renderLayer) {
|
RenderableComponent.prototype.setRenderLayer = function (renderLayer) {
|
||||||
@@ -8109,9 +8109,11 @@ var es;
|
|||||||
xFirstGid = xTileset["firstgid"];
|
xFirstGid = xTileset["firstgid"];
|
||||||
firstGid = xFirstGid;
|
firstGid = xFirstGid;
|
||||||
source = xTileset["image"];
|
source = xTileset["image"];
|
||||||
if (!!source) return [3, 2];
|
if (!(source != undefined)) return [3, 2];
|
||||||
source = map.tmxDirectory + source;
|
source = map.tmxDirectory + source;
|
||||||
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)];
|
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
xDocTileset = _a.sent();
|
xDocTileset = _a.sent();
|
||||||
tileset = this.loadTmxTileset(new es.TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
tileset = this.loadTmxTileset(new es.TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
||||||
@@ -8123,9 +8125,9 @@ var es;
|
|||||||
};
|
};
|
||||||
TiledMapLoader.loadTmxTileset = function (tileset, map, xTileset, firstGid) {
|
TiledMapLoader.loadTmxTileset = function (tileset, map, xTileset, firstGid) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var xImage, _a, _i, _b, e, _c, _d, xTile, tile, id, y, column, x;
|
var xImage, _a, _i, _b, e, _c, _d, _e, t, xTile, tile, id, y, column, x;
|
||||||
return __generator(this, function (_e) {
|
return __generator(this, function (_f) {
|
||||||
switch (_e.label) {
|
switch (_f.label) {
|
||||||
case 0:
|
case 0:
|
||||||
tileset.map = map;
|
tileset.map = map;
|
||||||
tileset.firstGid = firstGid;
|
tileset.firstGid = firstGid;
|
||||||
@@ -8140,10 +8142,12 @@ var es;
|
|||||||
xImage = xTileset["image"];
|
xImage = xTileset["image"];
|
||||||
if (!xImage) return [3, 2];
|
if (!xImage) return [3, 2];
|
||||||
_a = tileset;
|
_a = tileset;
|
||||||
return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory)];
|
return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
_a.image = _e.sent();
|
_a.image = _f.sent();
|
||||||
_e.label = 2;
|
_f.label = 2;
|
||||||
case 2:
|
case 2:
|
||||||
tileset.terrains = [];
|
tileset.terrains = [];
|
||||||
if (xTileset["terrains"])
|
if (xTileset["terrains"])
|
||||||
@@ -8152,23 +8156,28 @@ var es;
|
|||||||
tileset.terrains.push(this.parseTmxTerrain(e));
|
tileset.terrains.push(this.parseTmxTerrain(e));
|
||||||
}
|
}
|
||||||
tileset.tiles = new Map();
|
tileset.tiles = new Map();
|
||||||
_c = 0, _d = xTileset["tiles"];
|
_c = [];
|
||||||
_e.label = 3;
|
for (_d in xTileset["tiles"])
|
||||||
|
_c.push(_d);
|
||||||
|
_e = 0;
|
||||||
|
_f.label = 3;
|
||||||
case 3:
|
case 3:
|
||||||
if (!(_c < _d.length)) return [3, 6];
|
if (!(_e < _c.length)) return [3, 6];
|
||||||
xTile = _d[_c];
|
t = _c[_e];
|
||||||
|
if (!xTileset["tiles"].hasOwnProperty(t)) return [3, 5];
|
||||||
|
xTile = xTileset["tiles"][t];
|
||||||
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
|
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
|
||||||
case 4:
|
case 4:
|
||||||
tile = _e.sent();
|
tile = _f.sent();
|
||||||
tileset.tiles.set(tile.id, tile);
|
tileset.tiles.set(tile.id == undefined ? Number(t) + 1 : tile.id, tile);
|
||||||
_e.label = 5;
|
_f.label = 5;
|
||||||
case 5:
|
case 5:
|
||||||
_c++;
|
_e++;
|
||||||
return [3, 3];
|
return [3, 3];
|
||||||
case 6:
|
case 6:
|
||||||
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
||||||
tileset.tileRegions = new Map();
|
tileset.tileRegions = new Map();
|
||||||
if (tileset.image && tileset.image.bitmap) {
|
if (tileset.image) {
|
||||||
id = firstGid;
|
id = firstGid;
|
||||||
for (y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
for (y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
||||||
column = 0;
|
column = 0;
|
||||||
@@ -8180,8 +8189,8 @@ var es;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tileset.tiles.forEach(function (tile) {
|
tileset.tiles.forEach(function (tile, key) {
|
||||||
tileset.tileRegions.set(firstGid + tile.id, new es.Rectangle(0, 0, tile.image.width, tile.image.height));
|
tileset.tileRegions.set(key, new es.Rectangle(0, 0, tile.image.width, tile.image.height));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return [2, tileset];
|
return [2, tileset];
|
||||||
@@ -8368,28 +8377,26 @@ var es;
|
|||||||
};
|
};
|
||||||
TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
|
TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var xSource, _a, _b, _c, xData;
|
var xSource, texture;
|
||||||
return __generator(this, function (_d) {
|
return __generator(this, function (_a) {
|
||||||
switch (_d.label) {
|
switch (_a.label) {
|
||||||
case 0:
|
case 0:
|
||||||
xSource = xImage["image"];
|
xSource = xImage["image"];
|
||||||
if (!xSource) return [3, 2];
|
if (xSource != undefined) {
|
||||||
image.source = tmxDirectory + xSource;
|
image.source = tmxDirectory + xSource;
|
||||||
_a = image;
|
}
|
||||||
_c = (_b = egret.SpriteSheet).bind;
|
else {
|
||||||
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)];
|
image.source = tmxDirectory + xImage;
|
||||||
|
}
|
||||||
|
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(function (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
})];
|
||||||
case 1:
|
case 1:
|
||||||
_a.bitmap = new (_c.apply(_b, [void 0, _d.sent()]))();
|
texture = _a.sent();
|
||||||
return [3, 3];
|
image.bitmap = new egret.SpriteSheet(texture);
|
||||||
case 2:
|
|
||||||
image.format = xImage["format"];
|
|
||||||
xData = xImage["data"];
|
|
||||||
image.data = es.TmxUtils.decode(xData, xData["encoding"], xData["compression"]);
|
|
||||||
_d.label = 3;
|
|
||||||
case 3:
|
|
||||||
image.trans = es.TmxUtils.color16ToUnit(xImage["trans"]);
|
image.trans = es.TmxUtils.color16ToUnit(xImage["trans"]);
|
||||||
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : 0;
|
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : texture.textureWidth;
|
||||||
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : 0;
|
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : texture.textureHeight;
|
||||||
return [2, image];
|
return [2, image];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -8557,54 +8564,7 @@ var es;
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.tile:
|
case es.TmxObjectType.tile:
|
||||||
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
this.renderTilesetTile(objGroup, obj, container, pos, scale, debugRender);
|
||||||
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
|
||||||
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
|
||||||
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
|
||||||
}
|
|
||||||
else if (obj.tile.horizontalFlip) {
|
|
||||||
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
}
|
|
||||||
else if (obj.tile.verticalFlip) {
|
|
||||||
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
|
||||||
}
|
|
||||||
if (container) {
|
|
||||||
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
|
||||||
if (!texture) {
|
|
||||||
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
|
||||||
}
|
|
||||||
tileset.image.texture = new Bitmap(texture);
|
|
||||||
container.addChild(tileset.image.texture);
|
|
||||||
if (tileset.image.texture.x != pos.x)
|
|
||||||
tileset.image.texture.x = pos.x;
|
|
||||||
if (tileset.image.texture.y != pos.y)
|
|
||||||
tileset.image.texture.y = pos.y;
|
|
||||||
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}
|
|
||||||
else if (obj.tile.verticalFlip) {
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}
|
|
||||||
else if (obj.tile.horizontalFlip) {
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}
|
|
||||||
if (tileset.image.texture.anchorOffsetX != 0)
|
|
||||||
tileset.image.texture.anchorOffsetX = 0;
|
|
||||||
if (tileset.image.texture.anchorOffsetY != 0)
|
|
||||||
tileset.image.texture.anchorOffsetY = 0;
|
|
||||||
debugRender(obj, pos);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.ellipse:
|
case es.TmxObjectType.ellipse:
|
||||||
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
@@ -8656,6 +8616,86 @@ var es;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
TiledRendering.renderTilesetTile = function (objGroup, obj, container, pos, scale, debugRender) {
|
||||||
|
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
|
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
|
if (container) {
|
||||||
|
if (tileset.image) {
|
||||||
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
tileset.image.texture.x = pos.x;
|
||||||
|
tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
debugRender(obj, pos);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var tilesetTile = tileset.tiles.get(obj.tile.gid);
|
||||||
|
var texture = tilesetTile.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tilesetTile.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
pos.y -= obj.height;
|
||||||
|
tilesetTile.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tilesetTile.image.texture);
|
||||||
|
tilesetTile.image.texture.width = obj.width;
|
||||||
|
tilesetTile.image.texture.height = obj.height;
|
||||||
|
tilesetTile.image.texture.x = pos.x;
|
||||||
|
tilesetTile.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tilesetTile.image.texture.anchorOffsetX = 0;
|
||||||
|
tilesetTile.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
TiledRendering.renderGroup = function (group, container, position, scale, layerDepth) {
|
TiledRendering.renderGroup = function (group, container, position, scale, layerDepth) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
if (!group.visible)
|
if (!group.visible)
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ module es {
|
|||||||
* @param camera
|
* @param camera
|
||||||
*/
|
*/
|
||||||
public isVisibleFromCamera(camera: Camera): boolean {
|
public isVisibleFromCamera(camera: Camera): boolean {
|
||||||
this.isVisible = camera.bounds.intersects(this.bounds);
|
this.isVisible = camera.bounds.intersects(this.displayObject.getBounds().union(this.bounds));
|
||||||
return this.isVisible;
|
return this.isVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -269,10 +269,12 @@ module es {
|
|||||||
let source = xTileset["image"];
|
let source = xTileset["image"];
|
||||||
|
|
||||||
// 如果是嵌入式TmxTileset,即不是外部的,source将为null
|
// 如果是嵌入式TmxTileset,即不是外部的,source将为null
|
||||||
if (!source) {
|
if (source != undefined) {
|
||||||
source = map.tmxDirectory + source;
|
source = map.tmxDirectory + source;
|
||||||
// 其他所有内容都在TSX文件中
|
// 其他所有内容都在TSX文件中
|
||||||
let xDocTileset = await RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE);
|
let xDocTileset = await RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(err => {
|
||||||
|
throw new Error(err);
|
||||||
|
});
|
||||||
let tileset = this.loadTmxTileset(new TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
let tileset = this.loadTmxTileset(new TmxTileset(), map, xDocTileset["tileset"], firstGid);
|
||||||
|
|
||||||
return tileset;
|
return tileset;
|
||||||
@@ -297,7 +299,9 @@ module es {
|
|||||||
|
|
||||||
let xImage = xTileset["image"];
|
let xImage = xTileset["image"];
|
||||||
if (xImage)
|
if (xImage)
|
||||||
tileset.image = await this.loadTmxImage(new TmxImage(), xTileset, map.tmxDirectory);
|
tileset.image = await this.loadTmxImage(new TmxImage(), xTileset, map.tmxDirectory).catch(err => {
|
||||||
|
throw new Error(err);
|
||||||
|
});
|
||||||
|
|
||||||
tileset.terrains = [];
|
tileset.terrains = [];
|
||||||
if (xTileset["terrains"])
|
if (xTileset["terrains"])
|
||||||
@@ -305,9 +309,12 @@ module es {
|
|||||||
tileset.terrains.push(this.parseTmxTerrain(e));
|
tileset.terrains.push(this.parseTmxTerrain(e));
|
||||||
|
|
||||||
tileset.tiles = new Map<number, TmxTilesetTile>();
|
tileset.tiles = new Map<number, TmxTilesetTile>();
|
||||||
for (let xTile of xTileset["tiles"]) {
|
for (let t in xTileset["tiles"]){
|
||||||
let tile = await this.loadTmxTilesetTile(new TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory);
|
if (xTileset["tiles"].hasOwnProperty(t)){
|
||||||
tileset.tiles.set(tile.id, tile);
|
let xTile = xTileset["tiles"][t];
|
||||||
|
let tile = await this.loadTmxTilesetTile(new TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory);
|
||||||
|
tileset.tiles.set(tile.id == undefined ? Number(t) + 1 : tile.id, tile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
tileset.properties = this.parsePropertyDict(xTileset["properties"]);
|
||||||
@@ -315,7 +322,7 @@ module es {
|
|||||||
// 缓存我们的源矩形为每个瓷砖,所以我们不必每次我们渲染计算他们。
|
// 缓存我们的源矩形为每个瓷砖,所以我们不必每次我们渲染计算他们。
|
||||||
// 如果我们有一个image,这是一个普通的tileset,否则它是一个image tileset
|
// 如果我们有一个image,这是一个普通的tileset,否则它是一个image tileset
|
||||||
tileset.tileRegions = new Map<number, Rectangle>();
|
tileset.tileRegions = new Map<number, Rectangle>();
|
||||||
if (tileset.image && tileset.image.bitmap) {
|
if (tileset.image) {
|
||||||
let id = firstGid;
|
let id = firstGid;
|
||||||
for (let y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
for (let y = tileset.margin; y < tileset.image.height - tileset.margin; y += tileset.tileHeight + tileset.spacing) {
|
||||||
let column = 0;
|
let column = 0;
|
||||||
@@ -327,8 +334,8 @@ module es {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tileset.tiles.forEach(tile => {
|
tileset.tiles.forEach((tile, key) => {
|
||||||
tileset.tileRegions.set(firstGid + tile.id, new Rectangle(0, 0, tile.image.width, tile.image.height));
|
tileset.tileRegions.set(key, new Rectangle(0, 0, tile.image.width, tile.image.height));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,18 +523,19 @@ module es {
|
|||||||
|
|
||||||
public static async loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string) {
|
public static async loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string) {
|
||||||
let xSource = xImage["image"];
|
let xSource = xImage["image"];
|
||||||
if (xSource) {
|
if (xSource != undefined) {
|
||||||
image.source = tmxDirectory + xSource;
|
image.source = tmxDirectory + xSource;
|
||||||
image.bitmap = new egret.SpriteSheet(await RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE));
|
|
||||||
} else {
|
} else {
|
||||||
image.format = xImage["format"];
|
image.source = tmxDirectory + xImage;
|
||||||
let xData = xImage["data"];
|
|
||||||
image.data = TmxUtils.decode(xData, xData["encoding"], xData["compression"]);
|
|
||||||
}
|
}
|
||||||
|
let texture: egret.Texture = await RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE).catch(err => {
|
||||||
|
throw new Error(err);
|
||||||
|
});
|
||||||
|
image.bitmap = new egret.SpriteSheet(texture);
|
||||||
|
|
||||||
image.trans = TmxUtils.color16ToUnit(xImage["trans"]);
|
image.trans = TmxUtils.color16ToUnit(xImage["trans"]);
|
||||||
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : 0;
|
image.width = xImage["imagewidth"] != undefined ? xImage["imagewidth"] : texture.textureWidth;
|
||||||
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : 0;
|
image.height = xImage["imageheight"] != undefined ? xImage["imageheight"] : texture.textureHeight;
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,51 +171,7 @@ module es {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TmxObjectType.tile:
|
case TmxObjectType.tile:
|
||||||
let tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
this.renderTilesetTile(objGroup, obj, container, pos, scale, debugRender);
|
||||||
let sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
|
||||||
|
|
||||||
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
|
||||||
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
|
||||||
}
|
|
||||||
else if (obj.tile.horizontalFlip) {
|
|
||||||
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
|
||||||
}
|
|
||||||
else if (obj.tile.verticalFlip) {
|
|
||||||
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (container){
|
|
||||||
let texture: egret.Texture = tileset.image.bitmap.getTexture(`${obj.tile.gid}`);
|
|
||||||
if (!texture) {
|
|
||||||
texture = tileset.image.bitmap.createTexture(`${obj.tile.gid}`, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
tileset.image.texture = new Bitmap(texture);
|
|
||||||
container.addChild(tileset.image.texture);
|
|
||||||
|
|
||||||
if (tileset.image.texture.x != pos.x) tileset.image.texture.x = pos.x;
|
|
||||||
if (tileset.image.texture.y != pos.y) tileset.image.texture.y = pos.y;
|
|
||||||
if (obj.tile.verticalFlip && obj.tile.horizontalFlip){
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}else if (obj.tile.verticalFlip){
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = -1;
|
|
||||||
}else if(obj.tile.horizontalFlip){
|
|
||||||
tileset.image.texture.scaleX = -1;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}else{
|
|
||||||
tileset.image.texture.scaleX = scale.x;
|
|
||||||
tileset.image.texture.scaleY = scale.y;
|
|
||||||
}
|
|
||||||
if (tileset.image.texture.anchorOffsetX != 0) tileset.image.texture.anchorOffsetX = 0;
|
|
||||||
if (tileset.image.texture.anchorOffsetY != 0) tileset.image.texture.anchorOffsetY = 0;
|
|
||||||
debugRender(obj, pos);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case TmxObjectType.ellipse:
|
case TmxObjectType.ellipse:
|
||||||
pos = new Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
@@ -272,6 +228,82 @@ module es {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static renderTilesetTile(objGroup: es.TmxObjectGroup, obj, container: egret.DisplayObjectContainer, pos, scale: es.Vector2, debugRender) {
|
||||||
|
let tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
|
let sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
|
|
||||||
|
if (container) {
|
||||||
|
if (tileset.image) {
|
||||||
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
|
} else if (obj.tile.horizontalFlip) {
|
||||||
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
|
} else if (obj.tile.verticalFlip) {
|
||||||
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
} else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
let texture: egret.Texture = tileset.image.bitmap.getTexture(`${obj.tile.gid}`);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture(`${obj.tile.gid}`, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
|
||||||
|
tileset.image.texture.x = pos.x;
|
||||||
|
tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
} else if (obj.tile.verticalFlip) {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
} else if (obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
} else {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
debugRender(obj, pos);
|
||||||
|
} else {
|
||||||
|
let tilesetTile = tileset.tiles.get(obj.tile.gid);
|
||||||
|
let texture: egret.Texture = tilesetTile.image.bitmap.getTexture(`${obj.tile.gid}`);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tilesetTile.image.bitmap.createTexture(`${obj.tile.gid}`, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
pos.y -= obj.height;
|
||||||
|
tilesetTile.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tilesetTile.image.texture);
|
||||||
|
|
||||||
|
tilesetTile.image.texture.width = obj.width;
|
||||||
|
tilesetTile.image.texture.height = obj.height;
|
||||||
|
tilesetTile.image.texture.x = pos.x;
|
||||||
|
tilesetTile.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
} else if (obj.tile.verticalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = -1;
|
||||||
|
} else if (obj.tile.horizontalFlip) {
|
||||||
|
tilesetTile.image.texture.scaleX = -1;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
} else {
|
||||||
|
tilesetTile.image.texture.scaleX = scale.x;
|
||||||
|
tilesetTile.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
tilesetTile.image.texture.anchorOffsetX = 0;
|
||||||
|
tilesetTile.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number) {
|
public static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number) {
|
||||||
if (!group.visible)
|
if (!group.visible)
|
||||||
return;
|
return;
|
||||||
|
|||||||