|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
“fla”是Flash的原始档,只能用对应版本或更高版本的Flash打开编辑。
poluoluo中心提醒:做的器材必要本人封装一个HttpService的操纵类,传进url和提交的参数,前往ArrayCollection。参照Flexsample中的photoView(图片扫瞄器)的Http操纵写了个类,却发明它没法在类与类之间传值。
做的器材必要本人封装一个HttpService的操纵类,传进url和提交的参数,前往ArrayCollection。参照Flexsample中的photoView(图片扫瞄器)的Http操纵写了个类,却发明它没法在类与类之间传值。
一入手下手我的代码是如许的:
packageGZ0tu.Ucity.Model
{
importflash.events.*
importmx.collections.ArrayCollection;
importmx.collections.IViewCursor;
importmx.rpc.events.ResultEvent;
importmx.rpc.http.HTTPService;
importmx.utils.ArrayUtil;
publicclassResultService
{
privatevarservice:HTTPService;
publicvarResult:ArrayCollection;
publicfunctionResultService(url:String,obj:Object)
{
service=newHTTPService();
service.url=url+"?"+Math.random();
service.method=Constants.REQUEST_METHOD;
if(obj.action==Constants.READ)
{
service.addEventListener(ResultEvent.RESULT,resultHandler);
}
service.send(obj);
}
privatefunctionresultHandler(event:ResultEvent):void
{
Result=event.result.resp.catagory;
}
}
}我却非常忧郁地发明,在白色Result=event.result.resp.catagory我能够trace出Result的值,可是在别的类援用Result的时分它倒是null。这个成绩已是第二次呈现了,前次是让雨用一个奇妙的办法给办理了,此次得老厚道实办理它。
屡次trace今后,把成绩定位在了数值的感化域中。难道,Result失掉的是一个援用,而不是一个值?查阅flex匡助,event.result前往的是一个ArrayCollection,水到渠成赋值给Result不是很舒坦吗...成绩就在这里了..这个Result失掉的是对event.result.resp.catagory的援用。分开了resultHandler这个函数,event.result.resp.catagory也不复存在,Result所指向的工具酿成了空(null),因而trace出来的器材也只会是null了。
既然分明了是援用的成绩,随着要做的事变就很好办理了。我们要给Result赋值。ArrayCollection有一个addItem的办法,我只需使用它,就可以把Result充分了,它也不会再是null了。Result能够在别的类挪用了。
修正后的代码以下:
packageGZ0tu.Ucity.Model
{
importflash.events.*
importmx.collections.ArrayCollection;
importmx.collections.IViewCursor;
importmx.rpc.events.ResultEvent;
importmx.rpc.http.HTTPService;
importmx.utils.ArrayUtil;
publicclassResultService
{
privatevarservice:HTTPService;
publicvarResult:ArrayCollection=newArrayCollection();
publicfunctionResultService(url:String,obj:Object)
{
service=newHTTPService();
service.url=url+"?"+Math.random();
service.method=Constants.REQUEST_METHOD;
if(obj.action==Constants.READ)
{
service.addEventListener(ResultEvent.RESULT,resultHandler);
}
service.send(obj);
}
privatefunctionresultHandler(event:ResultEvent):void
{
varresult:ArrayCollection=event.result.resp.categories.categoryisArrayCollection
?event.result.resp.categories.categoryasArrayCollection
:newArrayCollection(ArrayUtil.toArray(event.result.resp.categories.category));
vartemp:ArrayCollection=newArrayCollection();
varcursor:IViewCursor=result.createCursor();
while(!cursor.afterLast)
{
Result.addItem(cursor.current);
cursor.moveNext();
}
}
}
}可是如许,人人请看蓝色那段的代码..必需初期实例化了Result才干给它赋值,这是个相称伤害的做法,严峻影响了类的可扩大性。同时我也不晓得应当要怎样写这个类才干让它更好地事情。假如我要处置相称多分歧的e4x数据,用switch是相对不明智的。到时分大概用工场形式来计划...大概间接写N个处置Http数据的类,写成static办法....发心得的同时,哀求指教,我应当怎样计划这个HttpResult类?
本来所谓的类间传值不克不及只是由于我所哀求的数据为空罢了……并且我竟然没无意识到这个成绩……由于事先Trace的时分是A类能够取得数据而B类不克不及取得的。FlashSeer的版主很耐烦地回覆了我的成绩。办理举措就是,利用监听器。
AS3中一个严重的修改就是完美了事务模子。统统异步的数据操纵经由过程事务来举行其实是太好不外了。同时,AS3中的Object是一个很好的数据载体,得当利用的话能够简化相称多的操纵。
明天(两天内三次重构)把一些关头的操纵代码等等写了出来,离成功又行进了一步~猫粮加油..大概会在10月中旬再重构一次项目标代码..到时分代码的质量又会再有一个进步吧。
Flash又被称之为闪客,是由macromedia公司推出的交互式矢量图和Web动画的标准,由Adobe公司收购。 |
|