首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数组作为模型Get/Set变量的as3 MVC

使用数组作为模型Get/Set变量的as3 MVC
EN

Stack Overflow用户
提问于 2013-05-15 11:04:25
回答 1查看 395关注 0票数 1

我对ActionScript3的model-view-controller框架比较熟悉,我只在model类中使用了数字和字符串作为变量。现在我所在的项目基本上是一个溢出的单一类。我应该从一开始就使用mvc,但我在一份新的工作中,有些人不了解mvc,嗯,是的,这并不重要,因为现在我们需要使用mvc。

所以不管怎样,我的问题是,如果您在model类中使用数组变量,并且对这些数组变量有一个getter/setter,那么什么才算“设置数组”呢?

如果我有一个setter调度更改事件,当您将某些内容推入或取消移位到数组中时,是否会触发此事件?当你拼接出一些东西时,它会被调用吗?当你在数组中改变一个电影剪辑的属性时,它会被调用吗?

谢谢!我们可以一起使用模型-视图-控制世界!

EN

回答 1

Stack Overflow用户

发布于 2013-05-15 11:24:45

问得好。让我们假设您的代码如下所示:

代码语言:javascript
复制
public function get dataArr():Array
{
   return _dataArr;
}

public function set dataArr(val:Array):void
{
   dispatchEvent(new Event(Event.CHANGE));
   _dataArr = val;
}

现在让我们假设您有一个包含这些函数的对象,比如model。请记住,getset函数基本上是语法上的糖。因此,即使看起来像一个简单的赋值,它仍然是一个函数调用。

代码语言:javascript
复制
// like calling some function model.setDataArr([1, 2, 3, 4, 5]);
// so event gets dispatched   
model.dataArr = [1, 2, 3, 4, 5];

// liek calling some function model.getDataArr().push(6);
// so setter never gets called and thus event is not dispatched.  
model.dataArr.push(6);

因此,简而言之,当您执行诸如shiftpush之类的操作时,事件将不会被调度。model.dataArr使用get函数返回数组,然后在返回的数组上调用方法。由于set函数从不被调用,因此事件永远不会被调度。

您可以在整个AS3应用程序接口中看到类似的场景。以DisplayObject#transform为例。当你只是做一些像dispObj.transform.matrix.tx += 10这样的事情时,内部的set函数永远不会被调用,也不会有任何影响。因此,您必须为要调用的set函数实际分配一个新的转换dispObj.transform = someTransform。这同样适用于您-您必须为要调用的set函数和调度的事件实际分配一些数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16556101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档