将mxml里面代码放在as文件里面怎么实 发布时间: 2012-02-23 22:01:36 作者: rapoo
将mxml里面代码放在as文件里面,如何实现,叩谢100分 开发环境eclipse+java+BlazeDS 我现在查询查询一个表的数据方法是: 第一步:新建一个Module,里面的内容如下
XML code <mx:Module initialize="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="100%"> <mx:DataGrid headerHeight="24" rowHeight="28" dataProvider="{roles}" width="100%" verticalAlign="middle" height="100%" headerStyleName="trHead"> <mx:columns> <mx:DataGridColumn width="180" dataField="name" headerText="角色代码" /> <mx:DataGridColumn width="80" dataField="roleType" headerText="角色类别" labelFunction="disRoleType" /> </mx:columns> </mx:DataGrid></mx:Module> 第二步:添加一个remoteObject
XML code <mx:RemoteObject id="krSysRoleService" destination="flexKrSysRoleService" result="getRole(event)" showBusyCursor="true"/> 第三步:写查询代码
XML code private function init():void{ krSysRoleService.query(); } private function getRole(event:ResultEvent):void{ roles = ArrayCollection(event.result); } 按上面的步骤可以吧数据查询出来,并且显示在DataGrid里面,问题是我现在想把上面查询的代码放在一个Class/as文件里面,直接写一个方法,将我的值直接返回出来,然后在我的Module里面写一个方法,把值绑定在DataGrid,用上面的方法只能是先写init()方法放在initialize里面,然后再去根据事件返回值去处理roles = ArrayCollection(event.result);,希望大侠给段代码指点一下。。谢谢。。 [解决办法] 新建一个 public class Service extends RemoteObject
将配置赋值,并有静态方法引用
Java codepublic class Service extends RemoteObject{ public static var _service:Service; public static function get service():Service { return _service; } public static function configService(destination:String,endpoint:String,source:String):void { _service = new Serivce(destination,endpoint,source); } public static function getOperation(name:String,responder:IResponder):Object { var operation:AbstractOperation = _service.getOperation(name); operation.addEventListener(ResultEvent.RESULT,responder.result); operation.addEventListener(FaultEvent.FAULT,responder.fault); return operation; } public function Service(destination:String,endpoint:String,source:String) { super(destination); this.endpoint = endpoint; this.source = source; }}[解决办法] 对了,主代码中需要查询时实例化KrSysRoleDelegate,然后krSysRoleDelegate.getRole()即可,krSysRoleDelegate可以设置相关侦听ResultEvent.RESUL/FaultEvent.FAULT[解决办法] 学习了[解决办法] 楼上的老大,谢谢了,,我看了看, 还看的不是很明白[解决办法] 楼上的老大,谢谢了,,我看了看, 还看的不是很明白[解决办法] 探讨 希望各位进来讨论讨论,这个问题是很多人应该碰到的,像java直接就写个方法就可以直接返回自己想要的值,而FLEX要实现是比较麻烦的。[解决办法] Flex中可以使用: 1、XML code
<mx:Script source="scripts/googleScripts.as"/>[解决办法] 用这个标签 <mx:script> </mx:script> 相当于html写JavaScript 或者说是 jsP里写 <%java代码%>[解决办法] 探讨 我的意思是想把下面的代码合成一个方法,例如现在我检测用户名的方法是checkLoginname,然后还要定义一个checkLoginnameResult这个方法去监听结果,而且我把这个方法写在一个Class文件里,还需要定义一个变量private var bresult:Boolean; 在checkLoginnameResult将监听的值赋给bresult变量,然后在mxml里面调用,在mxml里面调用,还必须定义一个方法, XML code public class FlexKrSysUserService{ private var bresult:Boolean; public function checkLoginname(loginName: String):void{ var ro: RemoteObject = new RemoteObject(); ro.destination = _destination; ro.checkLoginname(loginName); ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult); } public function checkLoginnameResult(evt: ResultEvent):Boolean{ bresult = evt.result as Boolean; return bresult; } public function getBresult(): Boolean{ return bresult; } } 能否将上面的代码合成一个方法: XML code public function checkLoginname(loginName: String):[b]Boolean[/b]{ var ro: RemoteObject = new RemoteObject(); ro.destination = _destination; var result = ro.checkLoginname(loginName); ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult); return result; }[解决办法] 探讨 新建一个 public class Service extends RemoteObject 将配置赋值,并有静态方法引用 Java codepublicclass Serviceextends RemoteObject {publicstatic var _service:Service;publicstatic function get service():Service {return _service; }publicstatic function configService(destination:String,endpoint:String,source:String):void { _service=new Serivce(destination,endpoint,source); }publicstatic function getOperation(name:String,responder:IResponder):Object { var operation:AbstractOperation= _service.getOperation(name); operation.addEventListener(ResultEvent.RESULT,responder.result); operation.addEventListener(FaultEvent.FAULT,responder.fault);return operation; }public function Service(destination:String,endpoint:String,source:String) {super(destination);this.endpoint= endpoint;this.source= source; } } 当然上述Service类可以直接由mxml来完成,有个静态引用即可 按你的title所说似乎是想要用的时候在调用,那么 新建一个public class DelegateBase extends EventDispatcher implements IResponder这样的业务基础 Java codepublicclass DelegateBaseextends EventDispatcherimplements IResponder {private var _operation:AbstractOperation;public function DelegateBase() {}public function result(data:Object):void { dispose(); }public function fault(info:Object):void { dispose(); }public function dispose():void { _operation.removeEventListener(ResultEvent.RESULT,result); _operation.removeEventListener(FaultEvent.FAULT,falut); _operation=null; }protected function getOperation(name:String):Object { _operation= Service.getOperation(name,this) as AbstractOperation;return _operation; } } 在来一个public class KrSysRoleDelegate extends DelegateBase Java codepublicclass KrSysRoleDelegateextends DelegateBase {private var _roleInfo:Object;public function KrSysRoleDelegate() {super(); }public function get roleInfo():Object {return _roleInfo; } overridepublic function result(data:Object):void { dispatch(data.clone() as ResultEvent); _roleInfo= data.result;super.result(data); }public function getRole():void { getOperation("query").send(); } } 到这里为止KrSysRoleDelegate的实例里roleInfo就一直储存着最后一次的交互数据,当然也可以将roleInfo相关写成静态。 代码存手打,非复制,及有可能有码错,相关类详细请查看API,也有可能错误理解了LZ的意思,请见量