首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WindowedApplication的Flex 4/空气设置界

WindowedApplication的Flex 4/空气设置界
EN

Stack Overflow用户
提问于 2010-07-09 13:39:02
回答 1查看 359关注 0票数 1

由于某种原因,这个flex 4代码给了我一个错误,但我不知道为什么。在我的WindowedApplication中有:

代码语言:javascript
复制
var prefs:Object = fs.readObject();
fs.close();
var rect:Rectangle = new Rectangle();
rect = prefs.bounds as Rectangle;
this.bounds = rect;  // error here

错误消息: ArgumentError: Error #2007:参数rect必须为非空。

我最初也尝试过不使用rect对象,只是尝试了:

代码语言:javascript
复制
this.bounds = prefs.bounds as Rectangle;

这给了我以下错误:

TypeError:错误#1034:类型强制失败:无法将Object@1 dbbe1f1转换为flash.geom.Rectangle。

这似乎是一个假错误,因为我可以将pref.bounds赋值为rect而不出现错误。我不知道为什么这不管用。它在flex 3兼容模式下工作,但这也破坏了我的许多火花组件,所以我不能使用它。

EN

回答 1

Stack Overflow用户

发布于 2010-07-09 13:45:58

代码语言:javascript
复制
rect = prefs.bounds as Rectangle;

rectnull告终,因为prefs.bounds不是Rectangle类的实例。如果as关键字转换失败,则返回null

只需在调用trace(prefs.bounds);之后给出一个readObject,看看它包含了什么。

更新:

prefs.bounds中的值具有x、y、宽度和高度属性这一事实并不使它成为Rectangle对象--它只是一个具有这四个属性的对象。简单的解决方案是从这些值创建一个Rectangle对象,并使用它:

代码语言:javascript
复制
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将返回适当类型的对象,而不是一般类型的对象。

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3213106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档