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

这个类大概的代码是:

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. linux重启tomcat的shell脚本

    基本思路: 先检查待重启的tomcat的进程是否存在 存在则执行shutdown. 然后再次检查进程是否还存在,不存在则执行kill 然后删除工作空间及10天前的日志. 最后执行启动. #!/bin/ ...

  2. 利用顺序栈解决括号匹配问题(c++)-- 数据结构

    题目: 7-1 括号匹配 (30 分)   给定一串字符,不超过100个字符,可能包括括号.数字.字母.标点符号.空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入格式: 输入在一行 ...

  3. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  4. request.getParameter中文乱码问题解决办法

    new String(request.getParameter("pageNo").getBytes("ISO-8859-1"),"UTF-8&quo ...

  5. 团队作业5——英语学习/词典App行业Top5

    来自权威研究机构易观智库的最新数据表明,国内几家主流词典类App市场的份额占比差异化分布进一步加剧. 对于156万安卓移动端活跃数字消费者的移动互联网行为监测结果显示,截至2014年8月底,有道词典A ...

  6. RabbitMQ-从基础到实战(3)— 消息的交换(上)

    转载请注明出处 0.目录 RabbitMQ-从基础到实战(1)— Hello RabbitMQ RabbitMQ-从基础到实战(2)— 防止消息丢失 RabbitMQ-从基础到实战(4)— 消息的交换 ...

  7. Java标识符和关键字(static,final,abstract,interface)

    本文的主要内容如下   1.标识符合关键字 2.Java中的关键字 3.static关键 字 4.static方法 5.静态代码块 6.static修饰符综述 7.final关键字 8.final修饰 ...

  8. node之文件的下载

    /** * 文件的下载 */ let express = require('express'); let app = express(); app.get('/',(req,res)=>{ re ...

  9. this 指向问题ES5

    ES5中this的指针 按照this指针的优先级,列出下面常会遇到的四种情况,从上到下依次是优先级从高到低(后面会详细比较优先级). 函数是和new一起被调用的吗(new绑定)?如果是,this就是新 ...

  10. Oracle 最新版本变化 转帖

    版本更迭 http://www.sohu.com/a/163264045_505827 Oracle Database的下一个版本将是 Oracle 18. 目的 为了更快的.通过每年的版本发布将新特 ...