对于基于组件的实体,我有一个属性在所有组件之间共享的字典......像位置,速度,健康等等。我遇到问题通知组件时,属性更改,但仅与非固有类型...如何通知组件的非内在类型已更改的属性/属性
见这个例子:
public class AttributeVector2D extends Attribute
{
protected var _value : Vector2D;
public function get value() : Vector2D { return _value; }
public function set value(data : Vector2D) : void { _value = data; _owner.attributeChanged(_id); }
public function AttributeVector2D() : void
{
super();
_value = new Vector2D(0, 0);
}
}
(有没有模板/在Flash中的仿制药,所以我知道这将是更漂亮了很多与他们)
问题是如果你只是这样做...... value.x = 320
,这是使用getter属性,而不是setter属性,并且所有者永远不会收到更改的通知。这只是非内在类型的一个问题。
除了更改它,所以你必须复制像setX()
和setY()
和setXY()
(其中Vector2D
类已经定义)功能,有另一种清洁的解决方案?
谢谢!
我会改变这篇文章的标题,以避免使用“通知”一词,我认为这意味着我们正在谈论消息或事件模型。这个问题实际上只是处理由属性返回的值类型。另外,我认为“价值型”比“非内在型”更为普遍。 –
哎呀对不起,我以为内在的意思就像int,float,boolean等等...不是类。我的错。 –
好的,我误解了你的问题。你真的在谈论通知。我没有滚动到右侧,看看你的setter调用了attributeChanged。我会发布一个新的答案... –