Thanx. Well i could extend Array and then override all the methods and
have them dispatch events, like ON_CHANGE.
Overwriting all the public mehtods is a pain, so I suspect i can use the
flash.utils.Proxy for this.
I just need to understand this utils.Proxy and flash_proxy thing.
Could somebody hint me if this would be worth looking into for this
particular case?
Jiri
Glen Pike wrote:
Sounds like you want to use a kind of "Observer" pattern:
Can you "wrap" up your array class in something that implements the
methods you want, ignores / passes on the stuff you care about and then
notifiies listeners of any changes that you care about?
Flex makes this quite easy with {watching} objects virtually
automatically - not sure if there is something in PureAS3 that would
help without requiring some huge framework.
The safest way of doing this though might be to prevent any external
class accessing your array. Make your class implement some kind of
"ArrayInterface" and allow the calling classes to use your class rather
than your array to add and remove things?
Glen
Jiri wrote:
Hello list,
Lets say I have a class with a public getter to a private var which
holds an Array.
Some other class can do this then:
var tArr:Array = class.myArray;
I can then do this:
tArr.push(int) and the content of the array has changed without the
class knowing. This is in most cases I use it ok, but now I am
wondering how to deal with it when I really want to create a read only
array.
I am aware that I can copy it, but then this can be very expensive
when it is requested a lot of times and it is a relative big array.
So i was thinking the following.
class A{
private var pArray:Array = [1,2,3]
public function get list():listArray{
return new listArray(pArray);
}
}
class listArray{
private var pList:Array
public function listArray(tArr:Array):void{
pList = listArray
}
override function push():void{
throw new IllegalOperationError()
}
}
I would have to override all the public methods of Array which can be
a pain.
My question is.
How would I prevent users from doing this:
listArray[n] = 'whatever'
Much appreciated
Jiri
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders