У меня есть класс, который я написал, и он кажется больше, чем должен быть. Он ничего не расширяет, и его очень мало - или так я думал - но каждый занимает чуть меньше 100k 100 байт (спасибо back2dos). Я предполагаю, что у меня нет очень хорошего понимания того, что действительно влияет на то, сколько памяти занимает объект в AS3.
Если бы кто-нибудь мог указать мне на какое-нибудь чтение по этому вопросу, которое могло бы быть полезным, или, возможно, объяснить какое-то понимание того, как думать об этом, это было бы замечательно.
Я хотел бы сохранить МНОЖЕСТВО этих объектов в памяти - и я думал, что смогу до сих пор, но при таком размере мне придется создавать их или использовать какую-то технику объединения объектов.
Спасибо за помощь.
Редактировать: Хотя у меня все в порядке, я сохраняю код, который я разместил здесь для полноты. Класс был сильно изменен по сравнению с оригинальной версией. Значения, которые ссылались на другие файлы, были сделаны статическими, чтобы позволить коду запускаться для кого-то другого (в теории хе-хе-хе ...).
Хотя моя ситуация разобрана, я дам ответ на хороший справочник информации о классах и памяти.
В этом случае класс имеет 15 переменных. Я использую только одну строку и кучу целых чисел, чисел и логических значений с некоторыми ссылками на некоторые из них в глобально доступных данных XML. Он также импортирует Point для конструктора, хотя точки не сохраняются. В тестировании, даже без глобальных ссылок XML или класса Point, он по-прежнему составляет около 84 тыс. Каждый. В дополнение к конструктору есть геттеры для 7 переменных и пара методов. Все из которых содержат менее 20 строк (и у меня очень редкий стиль кодирования).
Класс, упомянутый для справки, но не стесняйтесь обобщать:
package
{
public class AObject
{
private var _counter:int;
private var _frames:int;
private var _speed:int;
private var _currentState:String;
private var _currentFrame:int;
private var _offset:int;
private var _endFrame:int;
private var _type:int;
private var _object:int;
private var _state:int;
private var _x:Number;
private var _y:Number;
private var _w:int;
private var _h:int;
private var _update:Boolean;
public function AObject( targetX : int, targetY : int, state : int, object : int, type : int )
{
_x = targetX;
_y = targetY;
_type = type;
_object = object;
_state = state;
_counter = 0;
_w = 32;
_h = 32
_update = true;
setState( state );
}
public function setState( state:int ) : void
{
_currentState = "bob";
var frameCounter : int = 0;
var stateCounter : int = state - 1;
while ( state > 0 )
{
frameCounter += 4;
--stateCounter;
}
_offset = frameCounter;
_currentFrame = _offset;
_speed = 10;
_frames = 4;
_endFrame = _offset + _frames - 1;
}
public function get state() : int
{
return _state;
}
public function animate() : Boolean
{
if ( count() )
{
if( _currentFrame < _endFrame )
{
++_currentFrame;
}
else
{
_currentFrame = _offset;
}
_speed = 10;
return true;
}
else
{
return false;
}
}
private var adder: Number = 0;
private function count():Boolean
{
_counter++;
if ( _counter == _speed )
{
_counter = 0;
return true;
}
else
{
return false;
}
}
public function get x():int
{
return _x;
}
public function get y():int
{
return _y;
}
public function get type():int
{
return _type;
}
public function get object():int
{
return _object;
}
public function get currentFrame():int
{
return _currentFrame;
}
public function get w():int
{
return _w;
}
public function get h():int
{
return _h;
}
}
}