Invalid field access : xCalled from PlayState::enemyRandomPlacement line 149Called from PlayState::create line 84Called from flixel.FlxGame::switchState line 583Called from flixel.FlxGame::update line 668Called from flixel.FlxGame::step line 648Called from flixel.FlxGame::onEnterFrame line 493Called from openfl._legacy.events.EventDispatcher::dispatchEvent line 98Called from openfl._legacy.display.DisplayObject::__dispatchEvent line 182Called from openfl._legacy.display.DisplayObject::__broadcast line 161Called from openfl._legacy.display.DisplayObjectContainer::__broadcast line 280Called from openfl._legacy.display.Stage::__render line 1074Called from openfl._legacy.display.Stage::__checkRender line 339Called from openfl._legacy.display.Stage::__pollTimers line 1059Called from openfl._legacy.display.Stage::__doProcessStageEvent line 414
override public function create():Void { super.create(); tileMap = new FlxTilemap(); tileMap.loadMap(Assets.getText("assets/data/map.csv"), AssetPaths.tile1__png, TILE_WIDTH, TILE_HEIGHT, 0, 1); tileMap.setTileProperties(0, FlxObject.ANY); tileMap.setTileProperties(1, FlxObject.ANY); tileMap.setTileProperties(2, FlxObject.NONE); FlxG.worldBounds.set(0, 0, tileMap.width, tileMap.height); cameraFocus = new FlxSprite(); cameraFocus.makeGraphic(1, 1, FlxColor.TRANSPARENT); camera = FlxG.camera; camera.follow(cameraFocus, FlxCamera.STYLE_LOCKON); hero = new Player(); //Enemy Addition grpEnemies = new FlxGroup(); var i:Int = 0; while (i != FlxRandom.intRanged(5, 8)) { enemyRandomPlacement(0, 0, 0); enemyRandomPlacement(0, 0, 1); i++; } //Hero addition randomPlacement(); //Addition to state add(tileMap); add(cameraFocus); add(hero); add(movementMarker); add(grpEnemies); }
private function enemyRandomPlacement(x:Int, y:Int, etype:Int):Void { var enemy:Enemy = new Enemy(x, y, etype); var emptyTiles:Array<FlxPoint> = tileMap.getTileCoords(2, false); var randomEmptyTile:FlxPoint = emptyTiles[FlxRandom.intRanged(0, emptyTiles.length)]; enemy.setPosition(randomEmptyTile.x, randomEmptyTile.y); grpEnemies.add(enemy); }
Line 84:
enemyRandomPlacement(0, 0, 0);
Line 149:
enemy.setposition(randomEmptyTile.x, randomEmptyTile.y)
FlxRandom.intRanged(0, emptyTiles.length) gives you a number between 0 and emptyTiles.length. I guess you're getting the '
emptyTiles.length' number, which is out of bound of emptyTiles. Try calling intRanged(0, length-1).