来一发ActionScript3.0中类间传值成绩办理-Flash actionscript
“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公司收购。 它包含了下列常见的形式之一或者几种的组合:流媒体、声音、Flash、以及Java、Javascript、DHTML等程序设计语言。 关于位图和矢量图形的区别,可参看Flash教程。 flash 有这么多的优势,那么它的优缺点和设计方面的关系是什么? FLASH动画的视觉观赏效果好,容易给民众留下深刻的印象,是动画行业从业者和动画创意设计制作机构的主要业务之一。 作为奖赏,你可以使用关键祯动画支持和tweening- 两个最主要的节省时间的方式。本质上,关键祯是动画中显著事件发生的位置。 在网络营销中所提供的利益。如果我们仔细看看国内外的专业网站,很少看到应用FLASH格式的广告,如网络上的知名网站。相信它们并不缺乏FLASH图片的制作力量。 没有安装FLASH插件的前提下,无法正常显示广告效果。根据调查显示,有3%的互联网用户没有安装shockwave Flash。虽然比例不大,但不能因为这样一个简单的原因而拒绝这些用户。 只要用心 只要努力 在加上你无限的创意和想象。FLASH无敌了 alpha通道,图像的一部分可以变成透明,透明度可以从完全不透明到完全不可见。Alpha通道支持没有副作用。
页:
[1]