Because decoratorInstance is typed as Object, which is dynamic.
You shouldn't be calling methods on the parent anyway, but just dispatch an
event to which the parent (or whoever is interested)
listens.
// not tested so might be some errors in there
import mx.utils.Delegate;
import mx.events.EventDispatcher;
class MenuItem extends MovieClip() {
// initialize eventdispatcher - mixin
private static var dispatcherInit =
EventDispatcher.initialize(MenuItem.prototype);
// define eventdispatcher mixin methods
public var dispatchEvent:Function;
public var addEventListener:Function;
public var removeEventListener:Function;
private var some_mc:MovieClip;
public function MenuItem() {
this.init();
}
private function init():Void {
this.some_mc.onRelease = Delegate.create(this, this.mcReleaseHandler);
}
private function mcReleaseHandler():Void {
this.dispatchEvent({type:"click"});
}
}
import mx.utils.Delegate;
class Menu extends MovieClip
private var menuItem:MenuItem;
public function Menu() {
this.init();
}
private function init():Void {
this.createChildren();
}
private function createChildren():Void {
var mc:MovieClip = this.attachMovie("MenuItem", "menuItem",
this.getNextHighestDepth());
mc.addEventListener("click", Delegate.create(this,
this.menuItemClickHandler));
}
private function menuItemClickHandler(o:Object):Void {
trace("target: "+o.target);
}
}
regards,
Muzak
----- Original Message -----
From: "Pavel Krusek" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Sunday, May 27, 2007 9:48 AM
Subject: [Flashcoders] AS 2 -> access to private method in decorator pattern
> Hi there,
>
> i have class Menu.
>
> In this class i attach some movie clips ->
>
> this.mcItem =
> this.attachMovie("MenuItem","MenuItem"+this.getNextHighestDepth().toString(),this.getNextHighestDepth(),{_x:x,decorateInstance:this,ident:i});
>
> Class MenuItem >
>
>
> class MenuItem extends MovieClip
> {
> .....
> ....
> ....
> private var decorateInstance:Object;
> ....
> ....
> ...
>
> And later in class MenuItem, in some mouse 'onRelease' event handler, i`m
> calling method in Menu class through decorateInstance:
>
> this.decorateInstance.someMethod(args....);
>
> 'someMethod' in Menu class is private (i only wanted to try it) and all
> working OK.
> Why it is possible (accessibility of private method from another class)?
>
> thanks
>
> Pavel
>
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com