现在位置: 首页 > 博客文章 > 电脑相关 > IT开发 > 开发语言 > Flex > 正文
在Flex中动态设置对象的属性
2014年06月12日 10:36:09 Flex ⁄ 共 843字 暂无评论 ⁄ 被围观 1,885次

如果有类似这种情况,就是想在一个自定义的 Object 中设置很多个标志位,而且这些标志位往往是有规律的。比如像对 5 年中的 12 个月都设置一个标志位,如果这个月有任务,则标志为 1,否则为空。

常用写法:

Code   ViewPrint
  1. var flagObj:Object = new Object();
  2. if (第一年) {
  3.     if(一月 == 任务月) {
  4.         flagObj.f11 = "1";
  5.     }
  6.     if(二月 == 任务月) {
  7.         flagObj.f12 = "1";
  8.     }
  9.     ...
  10.     if(十二月 == 任务月) {
  11.         flagObj.f112 = "1";
  12.     }
  13. }
  14. ...
  15. if (第五年) {
  16.     if(一月 == 任务月) {
  17.         flagObj.f51 = "1";
  18.     }
  19.     if(二月 == 任务月) {
  20.         flagObj.f52 = "1";
  21.     }
  22.     ...
  23.     if(十二月 == 任务月) {
  24.         flagObj.f512 = "1";
  25.     }
  26. }

但是这样写,在这儿仅仅只有 5 年,如果是 50 年,可就毁了。所以必须有其它办法解决这种问题,于是就想到了动态给对象赋属性,这样以来,上面的问题也就是两个 for 循环的事儿,代码如下:

Code   ViewPrint
  1. for (var y:int=1; y<=5; y++) {
  2.     for (var m:int=1; m<=12; m++) {
  3.         if (任务月 == m) {
  4.             // 设置对象动态属性
  5.             var p:String = "f" + y.toString() + m.toString();
  6.             flagObj[p] = "1";
  7.         }
  8.     }
  9. }

如果年份不定,可以把循环中的 5 设为变量,给个初值即可。这样一来,n 年也不是问题了。

【下篇】

给我留言

留言无头像?