### ActionScript: Define Collision Polygons and Paths from Tiled Objects Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This ActionScript example demonstrates how to process Tiled objects with polygon and polyline shapes to define collision boundaries or navigation paths. It utilizes the io.arkeus.tiled library and flash.geom.Point for coordinate manipulation. ```actionscript package { import flash.geom.Point; import io.arkeus.tiled.TiledObject; import io.arkeus.tiled.TiledObjectLayer; public class PathfindingSystem { public function setupCollisionPolygons(objectLayer:TiledObjectLayer):void { var collisions:Vector. = objectLayer.getObjectsByType("collision"); for each (var obj:TiledObject in collisions) { if (obj.shape == TiledObject.POLYGON) { trace("Collision polygon: " + obj.name); var points:Vector. = obj.points; // Create collision shape from points for (var i:int = 0; i < points.length; i++) { var worldX:Number = obj.x + points[i].x; var worldY:Number = obj.y + points[i].y; trace(" Point " + i + ": (" + worldX + ", " + worldY + ")"); } createCollisionPolygon(obj.x, obj.y, points); } else if (obj.shape == TiledObject.POLYLINE) { trace("Path: " + obj.name); var pathPoints:Vector. = obj.points; // Create patrol path or navigation path createPath(obj.x, obj.y, pathPoints); } } } private function createCollisionPolygon(offsetX:Number, offsetY:Number, points:Vector.):void { // Collision polygon creation } private function createPath(offsetX:Number, offsetY:Number, points:Vector.):void { // Path creation for AI or player movement } } } ``` -------------------------------- ### ActionScript: Spawn Game Objects from Tiled Object Layers Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This snippet shows how to iterate through object layers in a Tiled map, find specific objects by name or type, and access their properties and shapes for game object instantiation. It relies on the io.arkeus.tiled library. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledObjectLayer; import io.arkeus.tiled.TiledObject; import io.arkeus.tiled.TiledLayer; public class ObjectSpawner { public function spawnObjects(map:TiledMap):void { // Get object layers var objectLayers:Vector. = map.layers.getObjectLayers(); for each (var layer:TiledLayer in objectLayers) { var objectLayer:TiledObjectLayer = layer as TiledObjectLayer; trace("Object layer: " + objectLayer.name); // Find specific object by name var playerSpawn:TiledObject = objectLayer.getObjectByName("player_start"); if (playerSpawn) { trace("Spawn player at: " + playerSpawn.x + ", " + playerSpawn.y); createPlayer(playerSpawn.x, playerSpawn.y); } // Get all objects of a specific type var enemies:Vector. = objectLayer.getObjectsByType("enemy"); if (enemies) { for each (var enemy:TiledObject in enemies) { trace("Enemy: " + enemy.name + " at " + enemy.x + ", " + enemy.y); trace("Size: " + enemy.width + "x" + enemy.height); // Check object shape if (enemy.shape == TiledObject.RECTANGLE) { createRectangularEnemy(enemy); } else if (enemy.shape == TiledObject.ELLIPSE) { createCircularEnemy(enemy); } // Access custom properties var health:String = enemy.properties.get("health"); var speed:String = enemy.properties.get("speed"); trace("Enemy stats - Health: " + health + ", Speed: " + speed); } } // Iterate all objects in layer for (var i:int = 0; i < objectLayer.objects.length; i++) { var obj:TiledObject = objectLayer.getObjectByIndex(i); trace("Object #" + i + ": " + obj.name); } } } private function createPlayer(x:Number, y:Number):void { // Player creation implementation } private function createRectangularEnemy(obj:TiledObject):void { // Rectangular enemy creation } private function createCircularEnemy(obj:TiledObject):void { // Circular enemy creation } } } ``` -------------------------------- ### Accessing Tileset Information in ActionScript 3 Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This snippet demonstrates how to access and display metadata for tilesets within a Tiled map. It iterates through all tilesets, extracts properties like dimensions, spacing, and offset, and also accesses custom properties defined for individual tiles. Dependencies include the io.arkeus.tiled library. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledTileset; import io.arkeus.tiled.TiledTile; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; public class TilesetManager { private var tilesetBitmaps:Object = {}; public function loadTilesets(map:TiledMap):void { // Iterate through all tilesets for (var i:int = 0; i < map.tilesets.length; i++) { var tileset:TiledTileset = map.tilesets.getTilesetByIndex(i); trace("Tileset: " + tileset.name); trace("First GID: " + tileset.firstGid); trace("Tile size: " + tileset.tileWidth + "x" + tileset.tileHeight); trace("Spacing: " + tileset.spacing); trace("Margin: " + tileset.margin); trace("Offset: " + tileset.tileOffset.x + ", " + tileset.tileOffset.y); // Load tileset image trace("Image source: " + tileset.image.source); trace("Image size: " + tileset.image.width + "x" + tileset.image.height); // Access custom tile properties for (var tileId:String in tileset.tiles) { var tile:TiledTile = tileset.tiles[tileId]; trace(" Tile ID " + tile.id + " properties:"); var animated:String = tile.properties.get("animated"); var damage:String = tile.properties.get("damage"); if (animated) trace(" Animated: " + animated); if (damage) trace(" Damage: " + damage); } } } public function getTileImage(map:TiledMap, gid:int):BitmapData { // Find tileset for this GID var tileset:TiledTileset = map.tilesets.getTilesetByGid(gid); if (!tileset) return null; // Calculate tile position in tileset var localId:int = gid - tileset.firstGid; var tilesPerRow:int = (tileset.image.width - tileset.margin * 2 + tileset.spacing) / (tileset.tileWidth + tileset.spacing); var tileX:int = localId % tilesPerRow; var tileY:int = localId / tilesPerRow; var sourceX:int = tileset.margin + tileX * (tileset.tileWidth + tileset.spacing); var sourceY:int = tileset.margin + tileY * (tileset.tileHeight + tileset.spacing); // Extract tile from tileset bitmap (implementation-specific) return extractTile(tileset.name, sourceX, sourceY, tileset.tileWidth, tileset.tileHeight); } private function extractTile(tilesetName:String, x:int, y:int, w:int, h:int):BitmapData { // Extract tile bitmap implementation return null; } } } ``` -------------------------------- ### Loading Maps from XML Objects Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt Details how to parse TMX map data from an XML object, which is useful for dynamically loading maps from external sources. ```APIDOC ## Loading Maps from XML Objects ### Description This section covers loading TMX map data from an XML object. This is typically used when maps are loaded dynamically from external files or fetched over a network. ### Method Instantiate `TiledReader`, load TMX data into an `XML` object, and then call `loadFromXML`. ### Endpoint N/A (Requires dynamic loading mechanism like URLLoader) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```actionscript package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; import io.arkeus.tiled.TiledReader; import io.arkeus.tiled.TiledMap; public class DynamicMapLoader extends Sprite { private var reader:TiledReader; public function DynamicMapLoader() { reader = new TiledReader(); var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, onMapLoaded); loader.load(new URLRequest("maps/dungeon.tmx")); } private function onMapLoaded(e:Event):void { try { var xml:XML = new XML(e.target.data); var map:TiledMap = reader.loadFromXML(xml); trace("Loaded map: " + map.width + "x" + map.height); var difficulty:String = map.properties.get("difficulty"); trace("Map difficulty: " + difficulty); } catch (error:Error) { trace("Error loading map: " + error.message); } } } } ``` ### Response #### Success Response (200) - **map** (TiledMap) - A `TiledMap` object containing the parsed map data. #### Response Example ```actionscript // Example of accessing map properties after loading var xml:XML = new XML(e.target.data); var map:TiledMap = reader.loadFromXML(xml); trace("Loaded map: " + map.width + "x" + map.height); trace("Version: " + map.version); var difficulty:String = map.properties.get("difficulty"); trace("Map difficulty: " + difficulty); ``` ``` -------------------------------- ### Rendering Image Layers in ActionScript 3 Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This ActionScript 3 code demonstrates how to iterate through map layers and render image layers. It accesses layer properties such as name, opacity, and visibility, then proceeds to load and display the associated image using Flash's Loader class. This is useful for parallax backgrounds or static overlays. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledImageLayer; import io.arkeus.tiled.TiledLayer; import flash.display.Loader; import flash.net.URLRequest; public class ImageLayerRenderer { public function renderImageLayers(map:TiledMap):void { var allLayers:Vector. = map.layers.getAllLayers(); for each (var layer:TiledLayer in allLayers) { if (layer is TiledImageLayer) { var imageLayer:TiledImageLayer = layer as TiledImageLayer; trace("Image layer: " + imageLayer.name); trace("Opacity: " + imageLayer.opacity); trace("Visible: " + imageLayer.visible); // Load and display image var imagePath:String = imageLayer.image.source; var imageWidth:int = imageLayer.image.width; var imageHeight:int = imageLayer.image.height; trace("Loading image: " + imagePath); trace("Image dimensions: " + imageWidth + "x" + imageHeight); loadAndDisplayImage(imagePath, imageLayer.opacity, imageLayer.visible); } } } private function loadAndDisplayImage(path:String, opacity:Number, visible:Boolean):void { if (!visible) return; var loader:Loader = new Loader(); loader.alpha = opacity; loader.load(new URLRequest(path)); // Add to display list... } } } ``` -------------------------------- ### Load TMX Map from Embedded Resource (ActionScript 3) Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt Loads an embedded TMX map file directly within a Flash application. This method uses the [Embed] metadata tag to include the TMX file as a resource. It requires the TiledReader and TiledMap classes from the AS3 Tiled Reader library. The loaded map can then be accessed for its properties like size, tile dimensions, orientation, and layers. ```actionscript package { import flash.display.Sprite; import io.arkeus.tiled.TiledReader; import io.arkeus.tiled.TiledMap; public class GameWorld extends Sprite { [Embed(source = "/maps/level1.tmx", mimeType = "application/octet-stream")] public static const LEVEL_1:Class; private var map:TiledMap; public function GameWorld() { // Load and parse the embedded map var reader:TiledReader = new TiledReader(); map = reader.loadFromEmbedded(LEVEL_1); // Access map properties trace("Map size: " + map.width + "x" + map.height); trace("Tile size: " + map.tileWidth + "x" + map.tileHeight); trace("Orientation: " + map.orientation); trace("Background: #" + map.backgroundColor.toString(16)); trace("Total layers: " + map.layers.length); } } } ``` -------------------------------- ### Accessing Tile Layer Data Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt Explains how to access and iterate through tile data within a `TiledTileLayer` object to render map elements. ```APIDOC ## Accessing Tile Layer Data ### Description This section details how to retrieve and process data from tile layers within a loaded TMX map. It covers iterating through layers and accessing individual tile information. ### Method Use the `layers.getTileLayers()` method on a `TiledMap` object to get all tile layers, then iterate through the `data` property of each `TiledTileLayer`. ### Endpoint N/A (Operates on loaded `TiledMap` object) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledTileLayer; import io.arkeus.tiled.TiledLayer; public class TileRenderer { public function renderMap(map:TiledMap):void { var tileLayers:Vector. = map.layers.getTileLayers(); for each (var layer:TiledLayer in tileLayers) { var tileLayer:TiledTileLayer = layer as TiledTileLayer; trace("Layer: " + tileLayer.name); trace("Visible: " + tileLayer.visible); trace("Opacity: " + tileLayer.opacity); var data:Array = tileLayer.data; for (var y:int = 0; y < tileLayer.height; y++) { for (var x:int = 0; x < tileLayer.width; x++) { var tileGid:int = data[y][x]; if (tileGid > 0) { renderTile(x, y, tileGid); } } } } } private function renderTile(x:int, y:int, gid:int):void { // Implementation for rendering individual tiles } } } ``` ### Response #### Success Response (200) This method does not return a value but performs an action (rendering tiles). #### Response Example ```actionscript // Example of iterating through tile data var tileLayers:Vector. = map.layers.getTileLayers(); for each (var layer:TiledLayer in tileLayers) { var tileLayer:TiledTileLayer = layer as TiledTileLayer; var data:Array = tileLayer.data; for (var y:int = 0; y < tileLayer.height; y++) { for (var x:int = 0; x < tileLayer.width; x++) { var tileGid:int = data[y][x]; if (tileGid > 0) { // Logic to render the tile } } } } ``` ``` -------------------------------- ### Read Custom Properties from Tiled Maps, Layers, and Objects Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This ActionScript code demonstrates how to read custom properties defined on Tiled maps, layers, and objects. It accesses key-value pairs stored in TiledProperties for metadata like music tracks, ambient light, parallax scrolling, auto-scroll speeds, and game object attributes such as health and AI type. This snippet requires the io.arkeus.tiled library. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledProperties; import io.arkeus.tiled.TiledLayer; import io.arkeus.tiled.TiledObject; public class PropertyReader { public function readMapProperties(map:TiledMap):void { // Map-level properties var props:TiledProperties = map.properties; var musicTrack:String = props.get("music"); var ambientLight:String = props.get("ambient_light"); var weatherEffect:String = props.get("weather"); trace("Map music: " + musicTrack); trace("Ambient light: " + ambientLight); trace("Weather: " + weatherEffect); // Layer properties var layers:Vector. = map.layers.getAllLayers(); for each (var layer:TiledLayer in layers) { var layerProps:TiledProperties = layer.properties; var parallaxX:String = layerProps.get("parallax_x"); var parallaxY:String = layerProps.get("parallax_y"); var scrollSpeed:String = layerProps.get("scroll_speed"); if (parallaxX) { trace(layer.name + " parallax: " + parallaxX + ", " + parallaxY); setLayerParallax(layer, parseFloat(parallaxX), parseFloat(parallaxY)); } if (scrollSpeed) { trace(layer.name + " auto-scroll: " + scrollSpeed); setLayerScrollSpeed(layer, parseFloat(scrollSpeed)); } } } public function readObjectProperties(obj:TiledObject):void { var props:TiledProperties = obj.properties; // Common game object properties var health:String = props.get("health"); var speed:String = props.get("speed"); var ai:String = props.get("ai_type"); var dropItem:String = props.get("drop_item"); var dialogue:String = props.get("dialogue"); if (health) trace("Health: " + health); if (speed) trace("Speed: " + speed); if (ai) trace("AI: " + ai); if (dropItem) trace("Drops: " + dropItem); if (dialogue) trace("Dialogue: " + dialogue); } private function setLayerParallax(layer:TiledLayer, x:Number, y:Number):void { // Set parallax scrolling } private function setLayerScrollSpeed(layer:TiledLayer, speed:Number):void { // Set auto-scroll speed } } } ``` -------------------------------- ### Load TMX Map from XML in AS3 Source: https://github.com/arkeus/as3-tiled-reader/blob/master/README.md Loads and parses TMX map data directly from an XML object using the TiledReader class. This method is useful when the TMX data is loaded externally or generated dynamically. ```actionscript var reader:TiledReader = new TiledReader; var map:TiledMap = reader.loadFromXML(yourXmlObject); ``` -------------------------------- ### Access Tile Layer Data (ActionScript 3) Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt Provides methods to access and iterate through tile data within a TiledMap object. It retrieves all tile layers using map.layers.getTileLayers() and then iterates through each layer's 2D data array. Information such as layer name, visibility, opacity, encoding, and compression can be inspected. The global tile ID (GID) is used to identify and potentially render individual tiles. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledTileLayer; import io.arkeus.tiled.TiledLayer; public class TileRenderer { public function renderMap(map:TiledMap):void { // Get all tile layers var tileLayers:Vector. = map.layers.getTileLayers(); for each (var layer:TiledLayer in tileLayers) { var tileLayer:TiledTileLayer = layer as TiledTileLayer; trace("Layer: " + tileLayer.name); trace("Visible: " + tileLayer.visible); trace("Opacity: " + tileLayer.opacity); trace("Encoding: " + tileLayer.encoding); trace("Compression: " + tileLayer.compression); // Access tile data (2D array) var data:Array = tileLayer.data; for (var y:int = 0; y < tileLayer.height; y++) { for (var x:int = 0; x < tileLayer.width; x++) { var tileGid:int = data[y][x]; if (tileGid > 0) { // Render tile at position (x, y) using global tile ID renderTile(x, y, tileGid); } } } } } private function renderTile(x:int, y:int, gid:int):void { // Implementation for rendering individual tiles } } } ``` -------------------------------- ### Load Embedded TMX Map in AS3 Source: https://github.com/arkeus/as3-tiled-reader/blob/master/README.md Loads and parses an embedded TMX map file using the TiledReader class. The parsed map data is returned as a TiledMap object, which can then be used to access map elements. ```actionscript var reader:TiledReader = new TiledReader; var map:TiledMap = reader.loadFromEmbedded(WORLD); ``` -------------------------------- ### Filter and Access Tiled Layers by Type and Visibility Source: https://context7.com/arkeus/as3-tiled-reader/llms.txt This ActionScript code demonstrates how to filter Tiled layers based on their visibility and type (tile layers, object layers). It also shows how to access custom properties defined on layers, such as 'type' and 'z-index', and conditionally process specific layer types like collision layers. This snippet requires the io.arkeus.tiled library. ```actionscript package { import io.arkeus.tiled.TiledMap; import io.arkeus.tiled.TiledLayer; import io.arkeus.tiled.TiledTileLayer; public class LayerManager { public function processLayers(map:TiledMap):void { // Get only visible layers var visibleLayers:Vector. = map.layers.getVisibleLayers(); trace("Visible layers: " + visibleLayers.length); for each (var layer:TiledLayer in visibleLayers) { trace(" " + layer.name + " (opacity: " + layer.opacity + ")"); // Access layer-specific properties var layerType:String = layer.properties.get("type"); var zIndex:String = layer.properties.get("z-index"); if (layerType == "collision") { processCollisionLayer(layer as TiledTileLayer); } } // Get all layers in render order (bottom to top) var allLayers:Vector. = map.layers.getAllLayers(); for (var i:int = 0; i < allLayers.length; i++) { trace("Layer " + i + ": " + allLayers[i].name); } // Get only tile layers var tileLayers:Vector. = map.layers.getTileLayers(); trace("Tile layers: " + tileLayers.length); // Get only object layers var objectLayers:Vector. = map.layers.getObjectLayers(); trace("Object layers: " + objectLayers.length); } private function processCollisionLayer(layer:TiledTileLayer):void { // Process collision tiles } } } ``` -------------------------------- ### Embed TMX File in AS3 Source: https://github.com/arkeus/as3-tiled-reader/blob/master/README.md Embeds a TMX map file directly into your ActionScript 3 application. This allows the map data to be compiled with your application, making it available at runtime. ```actionscript [Embed(source = "/map/world.tmx", mimeType = "application/octet-stream")] public static const WORLD:Class; ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.