加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 4开发遇到的几个问题

发布时间:2020-12-15 03:45:53 所属栏目:百科 来源:网络整理
导读:? 1、Ant启动编译不过的原因 ??????? 在项目开发过程中,遇到过许多Ant的问题,如Ant编译不过,但是项目中确没有错,这时候要耐心等等几分钟,第一次编译通过后,以后就不会这么慢了。 还有如果一直编译不过,则项目中可能存在错误,查看Myeclipse中的Proble

?

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中书写&&时,要写成 &amp;&amp,而||不用。


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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读