I have code that reads a JSON file to import the information about a level in a game I’m making. The code was running and compiling fine until suddenly every time I tried to build, FlashDevelop started erroring “build failed” without actually giving an error.
I ran the code through the mxmlc compiler, to give me an error message, and it returned an error saying “Error: access of undefined property JSON” in line:
var level:Object = JSON.decode(json);
This is confusing because the JSON library is clearly included at the top of the file, “import com.adobe.serialization.json.JSON;”, and this error started occurring completely on it’s own, which is odd…
package
{
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
import net.flashpunk.Entity;
import com.adobe.serialization.json.JSON;
public class LevelParser
{
public static function GetLevelByID(ID:int, source:Class):Level
{
// Store new entity
var populated:Vector.<Entity> = new Vector.<Entity>();
// Parse file into string
var bytes:ByteArray = new source();
var json:String = bytes.readUTFBytes(bytes.length);
var level:Object = JSON.decode(json);
// Find correct level
...
EDIT: Strangely if I comment out the line to call it, and this function, the code compiled fine in mxmlc, but in Flashdevelop is says “Build Failed” with no error
This is actually a reference error.
As of AS3 SDK 4.5, JSON became a native class within the SDK. In previous versions, you would have to download the adobe serialize classes to access JSON – which may be your issue.
When using the mxmlc, it will compile with all the included libraries specified in your sdk flex-config.xml. In FlashDevelop, it will only use the classes you include.
Solution: add the adobe serialize class to your project