rect = prefs.bounds as Rectangle;
rect
заканчивается как null
, потому что prefs.bounds
не является экземпляром класса Rectangle
. Приведение с as
ключевыми словами возвращает null
, если это не удается.
Просто наберите trace(prefs.bounds);
после вызова readObject
, чтобы увидеть, что в нем содержится.
Обновление:
Тот факт, что значение в prefs.bounds
имеет свойства x, y, width и height, не делает его объектом Rectangle
- это просто объект с этими четырьмя свойствами. Простое решение - создать объект Rectangle
из этих значений и использовать его:
var prefs:Object = fs.readObject();
var rect:Rectangle = new Rectangle(prefs.bounds.x, prefs.bounds.y, prefs.width, prefs.height);
this.bounds = rect;
Если вы вызовете registerClassAlias перед записью объекта прямоугольника в файловый поток, readObject
вернет объект соответствующего типа вместо общего.
registerClassAlias("flash.geom.Rectangle", Rectangle);
fs.writeObject(this.bounds);
//later...
//Casting with () will throw an error if the read object is not a Rectangle
var rect:Rectangle = Rectangle(fs.readObject());
trace(rect);