Niko,

I looked at your file...

Basically, your duplicate function is fetching the constructor of what
you're sending it, which is cast as a MovieClip... so it's calling the
constructor of MovieClip, which is obviously just an empty movie clip.
To fix this, I just set the Linkage Properties of the two symbols to
arbitrary names, (which I would do whenever I hoped to declare them as
classes).

So, the only question is, why did it work for the top level symbol and not
for the bottom? I believe this is because the top level symbol contained
another named MovieClip inside it, in essence giving it a property and
forcing Flash to store it internally as a class, to which it arbitrarily
assigned the name of "Delete2_1", regardless of it being assigned a Linkage
identifier/classname.

So, make sure any symbol you want to duplicate has a classname defined in
the library.
-jonathan


P.S. Read up on that "automatically declare stage instances" checkbox and
why it sucks!
On Mon, Aug 18, 2008 at 4:25 PM, Lair Nicolas <[EMAIL PROTECTED]>wrote:

> Hi nice list :-)
>
> Can somebody have a look on this problem please ? i don't understand why
> this duplicate method  doesn't work on nested movieClip :(
> You can check a really simple example at
> http://www.mymisu.com/niko/duplicateTest.rar
>
> It's really a basic example, i've commented the duplicate problem in the
> document class
>
> Thanks in advance ...
>
> Niko
>
>
> On Sun, Aug 17, 2008 at 9:09 AM, Lair Nicolas <[EMAIL PROTECTED]
> >wrote:
>
> > Hi Jonathan,
> >
> > thanks again for your feedback !!!
> >
> > In fact, _currentBackground is already on the stage - as a child of
> > view_main !!!
> >
> > I've put a simple example online, can you have a look at it ?
> > you can find it here : http://www.mymisu.com/niko/duplicateTest.rar
> >
> > Thanks a lot !!!
> >
> > Niko
> >
> >
> >
> > On Sat, Aug 16, 2008 at 9:11 PM, jonathan howe <[EMAIL PROTECTED]
> >wrote:
> >
> >> So, are you saying that the _currentBackground has a parent but is not
> on
> >> the stage?
> >> It's obviously possible if _currentBackground is nested inside something
> >> else that is not on the stage, but in the simplest scenario, if it
> doesn't
> >> have a parent, it's not going to run this block
> >>
> >>           if ( target.parent) {
> >>               target.parent.addChild(duplicate);
> >>           }
> >>
> >> So what does this output when you run it on _currentBackground:
> >>
> >>           if ( target.parent) {
> >>               target.parent.addChild(duplicate);
> >>                trace("duplicate():target.parent:",target.parent);
> >>           }
> >>
> >> -jonathan
> >>
> >>
> >> On Sat, Aug 16, 2008 at 8:27 PM, Lair Nicolas <[EMAIL PROTECTED]
> >> >wrote:
> >>
> >> > Hi, thanks for the response,
> >> >
> >> > i already tested it, and it's executed but strangly not displayed on
> >> screen
> >> > :(
> >> >
> >> > On Sat, Aug 16, 2008 at 7:48 PM, jonathan howe <
> [EMAIL PROTECTED]
> >> > >wrote:
> >> >
> >> > > "the only difference between _currentView and _currentBackground is
> >> that
> >> > > currentView
> >> > > is present on the stage"
> >> > >
> >> > > Aren't you testing for exactly that with the conditional " if (
> >> > > target.parent) {  } "?
> >> > >
> >> > > Throw a trace statement inside there and see if that block of code
> is
> >> > > actually executed.
> >> > >
> >> > > -jonathan
> >> > >
> >> > >
> >> > > On Sat, Aug 16, 2008 at 3:14 PM, Lair Nicolas <
> [EMAIL PROTECTED]
> >> > > >wrote:
> >> > >
> >> > > > Hi all,
> >> > > >
> >> > > > i'm trying to duplicate a nested movieClip in AS3, but it does not
> >> work
> >> > > :-(
> >> > > >
> >> > > > In my main fla, i've a movieClip named "view_main" that contains
> >> > another
> >> > > > movieClip named "background_mc"
> >> > > > I want to duplicate the background_mc movieClip by using the
> >> > constructor
> >> > > > property like that :
> >> > > >
> >> > > > _currentView = this.view_main as MovieClip;
> >> > > > _currentBackground = this._currentView.background_mc as MovieClip;
> >> > > >
> >> > > > _currentBackgroundCopy = duplicate(this._currentBackground) as
> >> > MovieClip;
> >> > > >
> >> > > > public function duplicate(target:DisplayObject):DisplayObject
> >> > > > {
> >> > > >            var targetClass:Class = Object(target).constructor;
> >> > > >            var duplicate:DisplayObject = new targetClass();
> >> > > >
> >> > > >            if ( target.parent) {
> >> > > >                target.parent.addChild(duplicate);
> >> > > >            }
> >> > > >            return duplicate;
> >> > > > }
> >> > > >
> >> > > > The call to duplicateDisplayObject(this._currentBackground, true)
> >> > return
> >> > > > the
> >> > > > correct movieClip but it doesn't appear on the screen - looks like
> >> the
> >> > > > addChild does not work ...
> >> > > >
> >> > > > Even better, it works if i call duplicate(this.currentView) and
> the
> >> > only
> >> > > > difference between _currentView and _currentBackground is that
> >> > > currentView
> >> > > > is present on the stage ...
> >> > > >
> >> > > > Thanks in advance :-)
> >> > > >
> >> > > > Niko
> >> > > > _______________________________________________
> >> > > > Flashcoders mailing list
> >> > > > [email protected]
> >> > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >> > > >
> >> > >
> >> > >
> >> > >
> >> > > --
> >> > > -jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME
> >> 04101
> >> > > _______________________________________________
> >> > > Flashcoders mailing list
> >> > > [email protected]
> >> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >> > >
> >> > _______________________________________________
> >> > Flashcoders mailing list
> >> > [email protected]
> >> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >> >
> >>
> >>
> >>
> >> --
> >> -jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME 04101
> >> _______________________________________________
> >> Flashcoders mailing list
> >> [email protected]
> >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >>
> >
> >
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>



-- 
-jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME 04101
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to