package;
import flixel.addons.editors.ogmo.FlxOgmoLoader;import flixel.addons.editors.tiled.TiledMap;import flixel.FlxCamera;import flixel.FlxG;import flixel.FlxObject;import flixel.FlxSprite;import flixel.FlxState;import flixel.text.FlxText;import flixel.ui.FlxButton;import flixel.util.FlxColor;import flixel.util.FlxMath;import flixel.tile.FlxTilemap;import haxe.io.Path;import openfl.Assets;
/** * A FlxState which can be used for the actual gameplay. */class PlayState extends FlxState{ private var player:FlxSprite; private var map:TiledLevel; /** * Function that is called up when to state is created to set it up. */ override public function create():Void { super.create(); map = new TiledLevel("assets/Map/map.tmx"); add(map.floorTiles); add(map.collideTiles); add(map.overTiles); //-----------------------------------------------------------------------------------------------------------------------
add(new FlxText(0, 0, 100, "Play State")); FlxG.camera.bgColor = 0xFF0080FF; //setCamera(); player = new Player(0, 0); add(player); } function setCamera():Void { FlxG.camera.follow(player, FlxCamera.STYLE_PLATFORMER); FlxG.camera.setBounds(0, 0, 0, 0, true); } /** * Function that is called when this state is destroyed - you might want to * consider setting all objects this state uses to null to help garbage collection. */ override public function destroy():Void { super.destroy(); }
/** * Function that is called once every frame. */ override public function update():Void { super.update(); } }package;
import openfl.Assets;import haxe.io.Path;import haxe.xml.Parser;import flixel.FlxG;import flixel.FlxObject;import flixel.FlxSprite;import flixel.group.FlxGroup;import flixel.tile.FlxTilemap;import flixel.addons.editors.tiled.TiledMap;import flixel.addons.editors.tiled.TiledObject;import flixel.addons.editors.tiled.TiledObjectGroup;import flixel.addons.editors.tiled.TiledTileSet;
/** * ... * @author Verlique */class TiledLevel extends TiledMap{ // Para cada "Tile Layer" no mapa, deve ser definido a propriedade "tileset" uqe ontem o nome da imagem do Tile sheet private inline static var pathLevelTiles = "assets/data/"; // Array de tilemaps usado para colisoes public var floorTiles:FlxGroup; public var collideTiles:FlxGroup; public var overTiles:FlxGroup; private var collidableTileLayers:Array<FlxTilemap>; public function new(tiledLevel:Dynamic) { floorTiles = new FlxGroup(); collideTiles = new FlxGroup(); overTiles = new FlxGroup(); FlxG.camera.setBounds(0, 0, fullWidth, fullHeight, true); // Carregar Tile Maps for ( tileLayer in layers ) { var tileSheetName:String = tileLayer.properties.get("tileset"); if (tileSheetName == null) throw "'tileset' property not defined for the '" + tileLayer.name + "' layer. Please add the property to the layer."; var tileSet:TiledTileSet = null; for ( ts in tilesets ) { if ( ts.name == tileSheetName) { tileSet = ts; break; } } if (tileSet == null) throw "Tileset '" + tileSheetName + " not found. Did you mispell the 'tilesheet' property in " + tileLayer.name + "' layer?"; var imagePath = new Path(tileSet.imageSource); var processedPath = pathLevelTiles + imagePath.file + "." + imagePath.ext; var tilemap:FlxTilemap = new FlxTilemap(); tilemap.widthInTiles = width; tilemap.heightInTiles = height; tilemap.loadMap(tileLayer.tileArray, processedPath, tileSet.tileWidth, tileSet.tileHeight, 0, 1, 1, 1); if (tileLayer.properties.contains("nocollide")) { if(tileLayer.properties.contains("over")) overTiles.add(tilemap);
floorTiles.add(tilemap); } else { if (collidableTileLayers == null) collidableTileLayers = new Array<FlxTilemap>(); collideTiles.add(tilemap); collidableTileLayers.push(tilemap); } } super(tiledLevel); } public function collideWithLevel(obj:FlxObject, ?notifyCallback:FlxObject->FlxObject->Void, ?processCallback:FlxObject->FlxObject->Bool):Bool { if (collidableTileLayers != null) { for ( map in collidableTileLayers) { // Sempre colidir com objetos return FlxG.overlap(map, obj, notifyCallback, processCallback != null ? processCallback : FlxObject.separate); } } return false; }}
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at TiledLevel()[C:\Development\EngineOn\source\TiledLevel.hx:42]
at PlayState/create()[C:\Development\EngineOn\source\PlayState.hx:32]
at flixel::FlxGame/switchState()[C:\HaxeToolkit\haxe\lib\flixel\3,3,11\flixel\FlxGame.hx:583]
at flixel::FlxGame/update()[C:\HaxeToolkit\haxe\lib\flixel\3,3,11\flixel\FlxGame.hx:668]
at flixel::FlxGame/step()[C:\HaxeToolkit\haxe\lib\flixel\3,3,11\flixel\FlxGame.hx:648]
at flixel::FlxGame/onEnterFrame()[C:\HaxeToolkit\haxe\lib\flixel\3,3,11\flixel\FlxGame.hx:493]