@@ -125,65 +125,76 @@ package org.flixel
125125 public function FlxTilemap ()
126126 {
127127 super ();
128- auto = OFF ;
129- widthInTiles = 0 ;
130- heightInTiles = 0 ;
131- totalTiles = 0 ;
132128 _buffers = new Array ();
133129 _flashPoint = new Point ();
134- _flashRect = null ;
135- _data = null ;
136- _tileWidth = 0 ;
137- _tileHeight = 0 ;
138- _rects = null ;
139- _tiles = null ;
140- _tileObjects = null ;
141130 immovable = true ;
142131 moves = false ;
132+
143133 cameras = null ;
144134 _debugTileNotSolid = null ;
145135 _debugTilePartial = null ;
146136 _debugTileSolid = null ;
147137 _debugRect = null ;
138+
139+ active = false ;
140+ visible = false ;
141+
148142 _lastVisualDebug = FlxG. visualDebug;
149- _startingIndex = 0 ;
150143 }
151144
152145 /**
153146 * Clean up memory.
154147 */
155148 override public function destroy ():void
156149 {
150+ clearTilemap();
151+ _tileObjects = null ;
152+ _buffers = null ;
157153 _flashPoint = null ;
158154 _flashRect = null ;
159155 _tiles = null ;
156+ _data = null ;
157+ _rects = null ;
158+ _debugTileNotSolid = null ;
159+ _debugTilePartial = null ;
160+ _debugTileSolid = null ;
161+ _debugRect = null ;
162+
163+ super . destroy();
164+ }
165+
166+ /**
167+ * An internal function for clearing all the variables used by the tilemap.
168+ */
169+ protected function clearTilemap ():void
170+ {
171+ widthInTiles = 0 ;
172+ heightInTiles = 0 ;
173+ totalTiles = 0 ;
174+ _data = null ;
175+ _tileWidth = 0 ;
176+ _tileHeight = 0 ;
177+ _rects = null ;
178+ _tiles = null ;
160179
161- if (_tileObjects != null )
180+ var i: uint ;
181+ var l: uint ;
182+ if (_tileObjects != null )
162183 {
163- var i : uint = 0 ;
164- var l : uint = _tileObjects . length ;
184+ i = 0 ;
185+ l = _tileObjects . length ;
165186 while (i < l)
166187 (_tileObjects [ i++] as FlxTile). destroy();
167188 _tileObjects = null ;
168189 }
169-
170- if (_buffers != null )
190+ if (_buffers != null )
171191 {
172192 i = 0 ;
173193 l = _buffers . length ;
174194 while (i < l)
175195 (_buffers [ i++] as FlxTilemapBuffer). destroy();
176196 _buffers = null ;
177197 }
178-
179- _data = null ;
180- _rects = null ;
181- _debugTileNotSolid = null ;
182- _debugTilePartial = null ;
183- _debugTileSolid = null ;
184- _debugRect = null ;
185-
186- super . destroy();
187198 }
188199
189200 /**
@@ -202,12 +213,15 @@ package org.flixel
202213 */
203214 public function loadMap (MapData :String , TileGraphic :Class , TileWidth :uint = 0 , TileHeight :uint = 0 , AutoTile :uint = OFF , StartingIndex :uint = 0 , DrawIndex :uint = 1 , CollideIndex :uint = 1 ):FlxTilemap
204215 {
216+ clearTilemap();
217+
205218 auto = AutoTile;
206219 _startingIndex = StartingIndex;
207220
208221 //Figure out the map dimensions based on the data string
209222 var columns : Array ;
210223 var rows: Array = MapData. split ("\n " );
224+ widthInTiles = 0 ;
211225 heightInTiles = rows. length ;
212226 _data = new Array ();
213227 var row : uint = 0 ;
@@ -272,7 +286,10 @@ package org.flixel
272286 i = 0 ;
273287 while (i < totalTiles)
274288 updateTile(i++ );
275-
289+
290+ active = true ;
291+ visible = true ;
292+
276293 return this ;
277294 }
278295
0 commit comments