flame_tiled: tileset image in a subfolder of an external .tsx resolves to the wrong path
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start with TiledAtlas.fromTiledMap in lib/src/tile_atlas.dart and trace how the map path, external .tsx path, and image source are combined. Compare the failing sets/edge.tsx and img/edge.png case with the ../tilesets/a.tsx case that already works. Done means external tileset images resolve relative to the .tsx folder and the resulting path is normalized; an open linked pull request #4118 is already addressing this issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
TiledComponent.load loads a tileset's image from the wrong folder when the external tileset and
its image paths have the same number of segments.
Map assets/tiles/edge.tmx:
<tileset firstgid="1" source="sets/edge.tsx"/>
Tileset assets/tiles/sets/edge.tsx:
<image source="img/edge.png" width="32" height="16"/>
Tiled resolves the image relative to the .tsx: assets/tiles/sets/img/edge.png.
flame_tiled 3.1.2 loads img/edge.png relative to the map folder instead
(assets/tiles/img/edge.png), so loading fails with Unable to load asset.
Why
TiledAtlas.fromTiledMap (lib/src/tile_atlas.dart) only prepends the tileset's folder when the
paths' segment counts differ:
if (tilesetParts.length != imageParts.length) {
tileImageSource = [...tilesetParts.sublist(0, tilesetParts.length - 1), ...imageParts].join('/');
}
sets/edge.tsx and img/edge.png both have 2 segments, so no join happens. ../tilesets/a.tsx +
a.png (3 vs 1) works, which is probably why this hasn't come up.
Expected
The image path is always resolved against the folder of the file that declares it (the .tsx
for external tilesets, the map for embedded ones), then normalized, the way Tiled does it.
Versions
flame 1.38.2, flame_tiled 3.1.2, tiled 0.11.1, Flutter 3.44.2, macOS. Possibly relevant to
#4015 (new imagesDirectory resolution) and #4073 (tiled 0.12 loader).
A minimal reproduction (generated assets + app) is available if useful.
- Lingua principale
- Dart
- Stelle
- 10.8k
- Fork
- 1.1k
- Merge medio
- 1g 15h
- PR unite (30g)
- 50
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di flame-engine/flame
-
SpriteBatch draws item colors differently when not using drawAtlas (useAtlas: false)Forse già presa @ufrshubham l’ha presa 2 giorni fa. Apertabug
flame-engine/flame#4122 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
flame_svg: Add support to load SVG files as Path objects for collision purposesForse già presa @adario l’ha presa 2 giorni fa. Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
flame-engine/flame#4120 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement v2
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
flame-engine/flame#4116 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
flame-engine/flame#4063 ·
I maintainer di solito rispondono entro 1 giorno
-
TextComponent shadows are not affected by OpacityEffectForse già presa @spydon l’ha presa 42 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
flame-engine/flame#4013 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di flame-engine/flame
Issue simili
-
Needs Attention platform: android type: infrastructure umbrella
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
firebase/flutterfire#18832 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
-
Error on parameter typeApertafrom.page-issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
sass/dart-sass#2888 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
[a11y_assessments] Disabled CheckboxListTile shares mutable stateForse già presa @kevmoo l’ha presa 12 giorni fa. Apertaa: accessibility fyi-design p: material_ui package team-accessibility
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno