最近在做一个Flex 3D项目,需要写一个组合体,比如用一个立方体和一个球相交,然后再减去一个圆柱体,组合出来一个新的东西,组合体在实际项目中应用很广泛,而且用途很大,对于很多项目,单一的原型比如立方体等是完全不能满足要求的。 当然本文不是想说组合体的问题,而是想说一个很基础的Flex知识点。 组合体不仅需要把数学结构组合在一块,对于原来的属性,比如颜色,贴图都需要顺带带过去,比如一个立方体是红色,组合一个白色的球体,那么组合后的组合体的立方体部分还应该是红色,球体部分还应该是白色。 实际项目中就发现,最后的属性对应不上,总是乱得,调试了好久,以为是算法的问题,最后才发现只是一个简单的问题导致的; bug 的原因是对于属性部分的遍历用Object 的 for in,但是由于Object 的for in 是无序的,就导致添加的顺序和后来取出的顺序不一致,所有就有了乱得情况,实际的效果也是张冠李戴,球的属性给了立方体,立方体的给了球。
照说这个基础的问题是不应该犯的,不过由于这个组合体算法比较复杂,所以一开始就把重心放在算法上,对于属性部分的迭代,没有太多留意,最终导致了bug 的出现。
所以很多时候,我们把自认为高深的部分攻克了,却在小阴沟里面翻船,对于一些基础的小问题,也是要额外注意的。这就好比踢球,一个人带球,过关斩将,突破重重包围,然后单刀,最后还绕过守门员,结果他妈的一脚没踢进,很不爽是吧,所以得多注意。
- 浏览: 81034 次
- 性别:
- 来自: 上海
最新评论
-
mikey_5:
确实得考虑投资了,在软件行业工作这么久了,还是没有多少长进,是 ...
屌丝程序员赚钱之道 之投资续 -
flyfox1982:
r361251 写道投资人脉,难。所有的东西都是需要一定的积累 ...
屌丝程序员赚钱之道 之投资续 -
无双Rama:
2. 做免费APP,然后投入广告。 这个方式,是比较适合中国 ...
屌丝程序员赚钱之道 之APP -
无双Rama:
下载后,是不是还要安装才能赚钱?
发现一个可以赚钱的手机应用 -
r361251:
投资人脉,难。
屌丝程序员赚钱之道 之投资续
相关推荐
需要注意的是,`for...in`循环遍历的顺序可能不是按照插入时的顺序,因为ActionScript 3.0中的Object没有保证属性的顺序。此外,`for each...in`循环不会遍历到不可枚举的属性,也不会遍历到原型链上的属性。 在...
4. **for...in循环**:for...in循环用于遍历对象的属性。例如,如果你有一个对象,想查看其所有属性,可以这样做: ```actionscript var obj:Object = {name: "John", age: 30}; for (var prop in obj) { trace...
总结一下,Flex中遍历Object对象内容主要依靠`for...in`和`for each...in`循环。在实际开发中,可以根据需求选择合适的方法,灵活地处理动态对象的数据。注意,`for...in`可以获取属性名和值,而`for each...in`仅...
- `for each`循环:遍历数组或对象的值,如`for each (var propertyValue in v1) { trace(propertyValue); }` - `for`循环在对象中遍历的是键(key),`for each`循环则直接取出值(value)。 3. **函数**: - ...
循环语句中,`for...in`枚举对象的键,而`for each...in`直接枚举集合的元素。数据类型分为原生类型(如`Boolean`、`int`、`Null`、`Number`、`String`、`uint`)和复杂类型(如类和接口)。每个变量在声明时必须...
for each (var item:Object in dataProvider) { item.selected = checked; } } } ``` 这是一个简单的CheckList类,它扩展了List并添加了一个全选CheckBox。当CheckBox状态改变时,会更新数据Provider中所有...
- **循环流程控制**:如 while、do...while、for、foreach...in 和 for...in。 #### 五、Flex布局与控件 - **Flex布局**:Flex提供了一系列布局管理器,如 HBox、VBox、Grid 等,用于组织和排列UI元素。 - **控件...
for (var key:String in obj) { excelFile.sheets.addItem(generateSheet(0, j, key)); // 写入列名 excelFile.sheets.addItem(generateSheet(i, j, obj[key])); // 写入数据 j += 1; } } ``` 其中,`...
使用 `p` 作为 `for-in` 循环的变量。 - **示例**: ```actionscript for (var i:int = 0; i ; i++) { for (var j:int = 0; j ; j++) { // 循环体 } } ``` ```actionscript for (var p:Object in ...
for each (var friend:Object in nestedJson.friends) { trace(friend); // 输出 "Anna" 和 "Bob" } ``` 4. **安全性**:在处理用户输入的JSON字符串时,要警惕潜在的XSS攻击。确保对输入进行验证和清理,避免...
foreach (var i:Object in ac) { bar.addItem(i); } // 或者更简洁的方法 var bar:ListCollectionView = new ListCollectionView(ListCollectionView(ac).list); ``` - **知识点说明**:`ArrayCollection` 是 Flex ...
foreach (var i:Object in ac) { bar.addItem(i); } ``` **知识点:** - **`ArrayCollection` 类**:Flex 中用于存储和管理数据的一种集合类。它可以方便地用于绑定数据到组件,实现数据驱动的界面设计。 - **`...
流程控制是编程中的关键部分,ActionScript 3中的`for...in`和`for each...in`循环用于遍历对象的属性或集合的元素。例如,`for(var 枚举变量 in 枚举集合)`会将枚举集合的每个属性或元素赋值给枚举变量。 综上所述...
for (let key in obj) { if (obj.hasOwnProperty(key)) { clone[key] = deepClone(obj[key]); } } return clone; } ``` 这种方法不能处理函数、RegExp、Date 等特殊类型的对象,或者循环引用的情况。 【实现...
<li v-for="(item, index) in list" :key="index"> (index)">× ``` 这段代码中,`<input type="file">`用于让用户选择要上传的图片,`@change`事件监听文件选择的变化。`v-for`指令用于循环渲染已上传的...
const不可),模板字符串(`` `${表达式}` ``),箭头函数(`() => {}`),函数参数默认值(`function foo(a = 'default')`),对象和数组解构,以及for...of循环(遍历可迭代对象)和for...in循环(遍历对象的可...
**1.5 FOROF与FORIN的区别** `for...in`循环用于遍历对象的可枚举属性,而`for...of`用于遍历可迭代对象。 - **FORIN**: ```javascript const obj = { a: 1, b: 2 }; for (const key in obj) { console.log(key...
for each (var imageXML:XML in xmlData.image) { images.push({url: imageXML.@url, delay: parseInt(imageXML.@delay)}); } displayImages(images); } ``` 4. 显示图片:最后,我们需要一个循环机制来展示...