设计一个图形类,来对应一个图形!

这个类大概的代码是:

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 数组问题!的更多相关文章

  1. [Flex] 组件Tree系列 —— 将数组作为dataProvider

    mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:将数组作为dataProvider ...

  2. 信息系统实践手记6-JS调用Flex的性能问题一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...

  3. 3.awk数组详解及企业实战案例

    awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...

  4. 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十一)路径导航模块

    config.xml文件的配置如下: <widget label="路径导航" icon="assets/images/lujingdaohang.png" ...

  5. DarkStone - 跨平台移动应用开发之 Flex 的崛起

    我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32)     此文章由 周戈 (DarkSton ...

  6. Flex数据交互之Remoting

    一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...

  7. FLEX的动画

    1.使用自带效果 在Flex里面不像在Flash里面随意制作动画了,Flex更趋向于应用程序,而不是动画制作了,所以没有了时间轴的概念.在Flex中使用动画效果,可以用Flex自带的Effect,或者 ...

  8. 转 Flex MXML编译成AS类

    2009-09-22 23:25 Flex MXML编译成AS类 由“Flex 基础”文中可知:每一个mxml文件首先要编译成as文件,然后再译成swf文件.app.mxml文件编译后会产生一系列中间 ...

  9. Flex开发一周年感悟

    优点: 1.Flex上手简单,与html和js很像,是一种web前端语言,对于简单的界面.图表.交互都有不错的封装.它能够让新手在短时间内开发出比较有模样的项目. 2.有很多第三方api可以使用,如a ...

随机推荐

  1. 一种C#泛型方法在lua中表示的设计

    在进行lua方法注册的时候, 大多数解决方案直接否定了泛型方法, 因为在lua侧难以表达出泛型, 以及lua的函数重载问题, 函数重载问题可以通过一些特殊方法解决, 而泛型问题是主要问题, 以Unit ...

  2. PAT甲题题解-1106. Lowest Price in Supply Chain (25)-(dfs计算树的最小层数)

    统计树的最小层数以及位于该层数上的叶子节点个数即可. 代码里建树我用了邻接链表的存储方式——链式前向星,不了解的可以参考,非常好用: http://www.cnblogs.com/chenxiwenr ...

  3. c# winform调用摄像头识别二维码

    首先我们需要引用两个第三方组件:AForge和zxing. Aforge是摄像头操作组件,zxing是二维码识别组件.都是开源项目.避免重复造轮子. 其实一些操作代码我也是参照别人的,若侵犯您的版权, ...

  4. 第一个Spring冲刺周期团队进展报告

    第一天:学习了解ocr技术 第二天:继续学习了解ocr技术 第三天:开始尝试寻找识别灰度化处理的代码 第四天:尝试编译运行灰度化处理代码 第五天:能够灰度化处理图片 第六天:搜索提高识别率的代码 第七 ...

  5. C++ Makefile文件编写

    对现有的一个C++动态库文件和调用程序,分别编写Makefile文件,从零开始,这里把自己弄明白的一些东西分享给大家. 1.必须明确Linux下,C++的编译器是g++,C语言的是gcc.网上大多数又 ...

  6. 第三周(JAVA编写的 wordcount)

    import java.io.*; public class WordCount { public static int words=1; public static int lines=1; pub ...

  7. 2013长春网赛 1006 hdu 4764 Stone(巴什博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764 题意:Tang 和 Jiang 玩一个游戏,轮流写下一个数,Tang先手,第一次Tang只能写[ ...

  8. 安装及调试 Mavem Web

    一  使用Mavem eclipse菜单栏,找到file-->new -->other 然后找到Maven Project 然后next. 接着,选择maven-archetype-web ...

  9. 浅入 dancing links x(舞蹈链算法)

    abastract:利用dancing links 解决精确覆盖问题,例如数独,n皇后问题:以及重复覆盖问题. 要学习dacning links 算法,首先要先了解该算法适用的问题,精确覆盖问题和重复 ...

  10. 【洛谷P4955 】[USACO14JAN]越野滑雪越野滑雪

    题目链接:ヾ(≧∇≦*)ゝ 对于每一个点可以向它右边的点和下面的点连边,权值就为两个点的高度差 然后再把所有的边按边权从小到大排序,并查集加点 最后判断当前集合是否涵盖所有的航点,如果是,就输出最后一 ...