Flex 数组问题!
设计一个图形类,来对应一个图形!
这个类大概的代码是:
public class ShapeModel extends ... {
[bindable]
private var _x:Number = 0;
[bindable]
private var _y:Number = 0;
[bindable]
private var _width:Number = 30;
...
[bindable]
private var _children:Array;
public function set x(value:Number):void{
this._x = value;
}
[Bindable]
public function get x():Number{
return this._x;
}
....
public function set children(childs:Array):void
{
this._children = childs;
for each(var shape:ShapeModel in childs) {
shape.owner = this;
}
}
[Bindable]
public function get children():Array
{
return this._children;
}
}
另外,还对模型类所对应的图形,添加一些操作动作,比如可以右键操作什么功能等。
其中,children是这个图形的子图形数组集合,包含一个或多个ShapeModel子数据,还可以一直嵌套下去。
如果代码是这样写的:
var children:Array = selShape.children; //selShape是当前选中的 .
if (!children) children = [];
children.push(newshape);
然后再用某个方法,把这个子children的变化反应更新到图形界面上去,比如:UpdateModelToGraphic(selShape);
添加的新图形是可以显示出来的,但是就会少了一些操作;
只有当再添加一个语句时,所添加的更新,才可以正常:
selShape.children = children;
这可以想象,跟Javascript有点相似:
var c = [];
var d;
d = c;
d.push('abc');
//请问现在c的值是多少
就是as跟javascript在操作某些类型的数据是,对于相互赋值的两个变量,当你操作其中一个时,其实另一个也跟着发生变化,因为他们是指向同一个内存位置的。
var children:Array = selShape.children;
就表示 selShape的chidlren内存同样分配给了children,当然对children某些操作时,selShape.children 也跟着变化。
所以执行 UpdateModelToGraphic(selShape) 时,图形上就能正常更新出来。
但又为什么新增的图形的某些操作,不能正常呢? (某个情况就是新子图形无法删除!)
---
selShape.children = children; 涉及到了 子图形 .owner 的操作;
public function set children(childs:Array):void
{
this._children = childs;
for each(var shape:ShapeModel in childs) {
shape.owner = this;
}
}
如果没有执行这句再赋值的语句,就无法正常的删除!
Flex 数组问题!的更多相关文章
- [Flex] 组件Tree系列 —— 将数组作为dataProvider
mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:将数组作为dataProvider ...
- 信息系统实践手记6-JS调用Flex的性能问题一例
说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十一)路径导航模块
config.xml文件的配置如下: <widget label="路径导航" icon="assets/images/lujingdaohang.png" ...
- DarkStone - 跨平台移动应用开发之 Flex 的崛起
我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32) 此文章由 周戈 (DarkSton ...
- Flex数据交互之Remoting
一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...
- FLEX的动画
1.使用自带效果 在Flex里面不像在Flash里面随意制作动画了,Flex更趋向于应用程序,而不是动画制作了,所以没有了时间轴的概念.在Flex中使用动画效果,可以用Flex自带的Effect,或者 ...
- 转 Flex MXML编译成AS类
2009-09-22 23:25 Flex MXML编译成AS类 由“Flex 基础”文中可知:每一个mxml文件首先要编译成as文件,然后再译成swf文件.app.mxml文件编译后会产生一系列中间 ...
- Flex开发一周年感悟
优点: 1.Flex上手简单,与html和js很像,是一种web前端语言,对于简单的界面.图表.交互都有不错的封装.它能够让新手在短时间内开发出比较有模样的项目. 2.有很多第三方api可以使用,如a ...
随机推荐
- PAT甲题题解-1046. Shortest Distance (20)-做了一个假的最短路,水
一开始以为是最短路,结果是给你一个环,让你求环上两点之间的距离...那还做毛线 然而还是得做毛线 #include <iostream> #include <cstdio> # ...
- 1094. The Largest Generation (25)-(dfs,树的遍历,统计每层的节点数)
题目很简单,就是统计一下每层的节点数,输出节点数最多的个数和对应的层数即可. #include <iostream> #include <cstdio> #include &l ...
- “数学口袋精灵”App的第二个Sprint计划----开发日记
一.现状 在第一个sprint计划中,我们已经初步完成了“数学口袋精灵”App的基本框架,现在我们要继续完善app,使其功能更加强大,界面更加有趣. 二.任务认领 完成界面后的后续任务: 冯美欣:欢迎 ...
- NPM和Yarn添加淘宝镜像
NPM设置淘宝镜像 1.查询当前配置的镜像 npm get registry > https://registry.npmjs.org/ 设置成淘宝镜像 npm config set regis ...
- 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]
题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- Beta 冲刺 三
团队成员 051601135 岳冠宇 031602629 刘意晗 031602248 郑智文 031602330 苏芳锃 031602234 王淇 照片 项目进展 岳冠宇 ## 项目进展 昨天的困难 ...
- [转帖]PG的简单备份恢复 找时间进行测试
转帖PG的简单使用 https://blog.csdn.net/lk_db/article/details/77971634 一: 纯文件格式的脚本: 示例:1. 只导出postgres数据库的数据, ...
- 使用AutoMapper实现Dto和Model的自由转换(上)
在实际的软件开发项目中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换.例如,一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中.另一方面,当用户请求 ...
- 深入理解ajax系列第八篇——表单提交
前面的话 在以前,网站的用户与后端交互的主要方式是通过HTML表单的使用.表单的引入在1993年,由于其简单性和易用性,直到电子商务出现之前一直保持着重要位置.理解表单提交,对于更深入地理解ajax是 ...
- BZOJ3881 Coci2015Divljak(AC自动机+树上差分+树状数组)
建出AC自动机及其fail树,每次给新加入的串在AC自动机上经过的点染色,问题即转化为子树颜色数.显然可以用dfs序转成序列问题树状数组套权值线段树解决,显然过不掉.事实上直接树上差分,按dfs序排序 ...