[lime.Assets] There is no String asset with an ID of "img/awesome game.json"


#1

There is a way to use assets created at runtime?

openfl 4.2.0
lime 3.2.1


#2

wild guess: spaces might always be a problem


#3

I try this: mygame.json
but [lime.Assets] There is no String asset with an ID of “img/myGame.json”

I think the problem is whem you create the assets at run time.
If i use the same “awesome game.json” file in assets before compilation it works, but if i create the file at runtime it crash, is something with the ID in assets i think it dont exist. Or i need to create that ID for the assets that i create at runtime. But dont know how


#4

You need to use FileSystem if it’s at run time. Assets does not work unless you complie with the assets already there.


#5

Yeah, at runtime you would use something like:

var text = File.getContent ("img/awesome game.json");
var json = Json.parse (text);
trace (json.property);

(unless it is Android, be aware that your APK is zipped, and you cannot use ordinary file operations on your packaged asset files)


#6

Hi Sing!
The target is mac, i already use the File.getContent aproach but it crashes,
Is the same code but i dont know what happen… maybe the File.getContent take more time to load the text than Assets.getText ?

public function updateGamePath(path:String):Void
	{
		// refresh path
		this.path = path;
		// load new library
		// delete old objects
		if(this.img != null)
		{
			this.img = null;
			this.img_level = null;
		}
		// get graphics
		// var string:String = Assets.getText("img/" + this.path + ".json");
		var string:String = sys.io.File.getContent("img/" + this.path + ".json");
		this.img = Json.parse(string);
		// get levels
		// var string1:String = Assets.getText("img/" + this.path + "1.json");
		var string1:String = sys.io.File.getContent("img/" + this.path + "1.json");
		this.img_level = Json.parse(string1);
	}

#7

Perhaps try and see what Sys.getCwd () returns, it’s possible your working directory is different than the asset folder (so you might need “Contents/img” or something like that)

You can also use Assets.getPath ("known asset"); and use that as a reference to find the path to other assets which may appear at runtime.