Flex 4开发遇到的几个问题
? 1、Ant启动编译不过的原因 ??????? 在项目开发过程中,遇到过许多Ant的问题,如Ant编译不过,但是项目中确没有错,这时候要耐心等等几分钟,第一次编译通过后,以后就不会这么慢了。 还有如果一直编译不过,则项目中可能存在错误,查看Myeclipse中的Problems面板输出,警告可忽略,但是错误不能,即使是 jsp报错 2、 ??? 在使用<s:list>时,如果向dataProvider中提供的数据只有一条,则需要直接写成如下: [Bindable] public var vcModel:ArrayCollection = new ArrayCollection( [ {label:"基本信息",data:'yes'} ] ); 而不能写成如果形式: <fx:Model id="vcModel"> <states> <state label="选择新建类型" data="yes"/> <state label="指定基本信息" data="yes"/> </states> </fx:Model> dataProvider="{new ArrayCollection(vcModel.state)}" ? 3、在做Flex时,通过复选框选中数据后提交到后台,然后就需要除去这些选中的状态,全部刷新回未选中的状态,可使用如下的代码: for(var i:int=0;i<b.length;i++){ if(b.getItemAt(i).selected){ (b.getItemAt(i) as VClassroom).selected=false; } b.refresh();// 必须要进行刷新,否则更改不了状态 4、在开发Flex项目的过程中,有一次感觉到程序突然变慢,后发现是因为打了断点,而断点处于半失效状态,导致程序非常慢。所以不要泛滥的去为程序打断点。 5、在开发系统中,最好不要在Java程序中使用中文(注释除外),否则后续的版本发布等一系列过程都可能导致乱码问题。如果要写中文时,最好写到.properties文件中,然后去读取。 ? 6、如下的代码段,由于remoteDesktopMap在首次执行时是被new出来的,所以一定要最后放到容器中,否则desktopMap会变为空 public void addDesktop(String clientAddress,WebSocket webSocket,Map<String,Object> map){ RemoteDesktopVo desktop = new RemoteDesktopVo(); desktop.handleVClassClientRemoteDesktop(clientAddress,webSocket,map); HashMap<String,RemoteDesktopVo> remoteDesktopMap = desktopMap.get(clientAddress); if(remoteDesktopMap == null){ remoteDesktopMap = new HashMap<String,RemoteDesktopVo>(); remoteDesktopMap.put(desktop.getUuid(),desktop); }else{ remoteDesktopMap.put(desktop.getUuid(),desktop); } desktopMap.put(clientAddress,remoteDesktopMap); // 这里一定要有这段代码 // 处理终端数量 VClassroom vClassroom = classroomMap.get(clientAddress); vClassroom.setTotalVmCount(vClassroom.getTotalVmCount() + 1); if(desktop.getTerminalIp() != null && !desktop.getTerminalIp().equals("")){ vClassroom.setOnlineVmCount(vClassroom.getOnlineVmCount() + 1); } } ?7、注意需要加一个括号,还有在mxml中书写&&时,要写成 &&,而||不用。 visible="{(vclassroomManagerPM.selectClassroom.vtype == 1 && vclassroomManagerPM.selectClassroom.status == 2)} 8、安装任何软件时,不要有中文路径,否则某些软件会出现异常,例如:无法正确安装或者安装后启动不了 9、在编写程序时,一定要书写一个清晰的设计文档 10、项目很大时,如果某一次项目出现异常,不防clean一下。如: (1)Flex程序正确,但是加载的为空白页面,需要clean一下。 (2)使用ant部署时编译不过,需要使用ant来clean一下。 (3)SVN加锁,需要clean一下。 (4)修改后的程序没有显示出预期的效果,clean一下浏览器缓存。 11、关于<mx:Canvas> <fx:Component > <mx:Canvas width="240" height="200" horizontalScrollPolicy="off" verticalScrollPolicy="off"> <s:VGroup x="10" y="10" gap="2" height="300" > <mx:Label text="{data.name}"/> <fx:Script> <![CDATA[ import com.fronware.vaccess.model.VClassroomManagerPM; [Inject] [Bindable] public var vclassroomManagerPM:VClassroomManagerPM; public function getList(ip:String):void{ var vp:VClassroomManagerPM=new VClassroomManagerPM(); vp.getMirrorList(ip); } ]]> </fx:Script> <mx:Image x="25" y="20" width="200" height="180" source="assets/my.jpg" /> <s:HGroup width="100%" height="100%" gap="2" paddingTop="-30" toolTip="{data.mirrorMsg}"> <mx:Label text="镜像总数: {data.mirrorCount}" /> <mx:Label text="终端总数:{data.totalVmCount}" /> <mx:Label text="上课终端:{data.onlineVmCount}"/> </s:HGroup> </s:VGroup> </mx:Canvas> </fx:Component>或者还有一个outerDocument对象,可以通过这个对象进行外部方法的调用。如下: <mx:DataGridColumn width="16"> <mx:itemRenderer> <mx:Component> <mx:CheckBox selected="{data.selected}" change="checkbox1_changeHandler(event)"> <mx:Script> <![CDATA[ protected function checkbox1_changeHandler(event:Event):void { //将复选框的状态保存在obj中,防止出现复选框错乱的情况 outerDocument.obj.getItemAt(outerDocument.dg.selectedIndex).selected=event.target.selected; } ]]> </mx:Script> </mx:CheckBox> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> 12、对同一个引用对象的改变最终会影响到这个对象 public class test02 { public static void main(String[] args) { User user = new User(); user.setA("19"); new test02().change(user); System.out.println(user.getA()); //11 } public void change(User user) { user.setA("11"); } } 13、参数要对应 public function tryLink(o:ArrayCollection):void{ var e:VClassroomEvent = new VClassroomEvent(VClassroomEvent.TRY_LINK); e.list=o; sendMessage(e); }senMessage()为一个VClassroomEvent事件,所以在service层需要如下代码来接收: [MessageHandler(selector="trylink")] public function trylink(e:VClassroomEvent):void { var token:AsyncToken = service.trylink(e.list); token.addResponder(new AsyncResponder(onSucMirrorimageList,onFault,token)); } 14、查看系统消息 Properties props = System.getProperties(); props.list(System.out); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |