-
targeting Sprite as MovieClip(parent)
I have a MC1 with a comp.as class file
I have a MC2 with a object.as class file
- MC1 has all variables for the animation. It creates a number of MC2 children.
For some reason I can only use MovieClip(parent).somevariable in MC2 if I set the comp.as class file to package as "MovieClip" instead of "Sprite".
But that makes MC1 loop 2 frames nonstop.
Anybody knows how to call upon a Sprite as parent?
P
-
Use Sprite(parent) instead of MovieClip(parent). What properties of a Sprite or MovieClip are you using that you need to cast parent in the first place? If it's the variables you've defined, then you should cast to the comp class instead.
-
testing, doesn't work.
trace(Sprite(parent).hor) gives an error
1119: Access of possibly undefined property hor through a reference with static type flash.display:Sprite.
MC1 has a variable "hor", numeric. Every MC2 child draws a shape and has to move it the distance "hor" pixels over a period of say e.g. 48 frames.
P
-
That's exactly why I said that if it's the variables you've defined in the comp.as file that you need access to you should cast to comp instead.
comp(parent).hor
Casting is the process of telling as3 that a variable of one type is actually of another type. The type of parent is DisplayObjectContainer, so in order to use things that are specific to a different type, such as MovieClip, Sprite, or comp, you have to cast.
-
aaah, indeed comp(parent).hor worked
tnx man. I knew there must be some simple way. I'm used to AS2 and simply using _parent will work fine. Still getting used to AS3 and new syntax stuff and class files. I'm just digging into external .as files and wasn't aware you could call the class file name this way.
What I can figure out is why it's comp(parent).hor and not comp.hor
Snouldn't comp. be sufficient without the parent?
P.
-
Originally Posted by patrickjv
aaah, indeed comp(parent).hor worked
What I can['t] figure out is why it's comp(parent).hor and not comp.hor
Snouldn't comp. be sufficient without the parent?
Nope. comp is a class, not an instance. The hor property defined in comp applies to each instance of a comp. You could have defined it to apply to the class itself by using the static keyword, in which case comp.hor would have worked, but there would be only a single hor for all comps. And as any pimp knows, a single hor ain't much.
-
I see, well.. whatever works I'll take it any time. Glad to see I can continue without having to push a duplicate to every MC2 child from the comp.as script, that would make so much redundant garbage variable. Extracting from, like I now can, is so much more efficient
Originally Posted by 5TonsOfFlax
And as any pimp knows, a single hor ain't much.
LOL, and so many comps to take care off, hehe
tnx again
P.
-
darn... i did something and suddenly it's not working anymore. The moment I use comp.(parent).hor I get
TypeError: Error #1034: Type Coercion failed: cannot convert classes.dollar::comp@3a260b1 to comp.
Now I can't figure out what I did, pulling my hair out with frustration
I was testing component shim implementation so maybe that did something weird
any clue?
P
-
so weird
the comp.as and object.as files were both in subfolders of the folder where the .fla resides, namely in /classes/dollar/
So I tried classes.dollar.comp(parent).hor instead of comp(parent).hor and voila it worked again.
Any clue why it worked before? they were in that folder the whole time and it worked right away after your sugestion. Anything to do with 'private' or 'public' or "export in first frame" or anything else I'm missing?
P.
-
could be a classpath issue. I'm not that familiar with component shim though. If you declared each to be in the classes.dollar package, you shouldn't have had to use the fully qualified name. But I don't really know for sure.
-
comp.(parent).hor
and
classes.dollar.comp(parent).hor
have one little difference that you would easily overlook:
comp.(parent).hor is not the same as comp(parent).hor
???
you've got an extra "dot" in thar.
I learned to cast things in the
Code:
some_class_object:sprite //I'm just including this line to show that the variable is being stored as something it extended or whatev
this.(some_class_object as some_class).some_function();
format, which I find a bit easier to read. I don't think there's a functional difference so it's just a stylistic option.
Last edited by Shokushu; 01-26-2008 at 11:23 PM.
-
the extra dot was a typo. Still haven't figured it out though... but as long as complete folder path works I won't complain anmymore, ha.
Got different things to worry about, like why the heck the component Avatar movieclip is not hiding on ctr-test ... a whole new posting maybe.
P.
-
New info: I created a whole new folder for everything and started more or less from scratch, that solved the "path" issue in .as file. Makes no sense but it did. Can use comp(parent).hor now
New issue:
Instead of placing a component in a keyframe, I'm testing out by AS.
Should frame script
Code:
var child = new classes.dollar.comp();
addChild(child);
work? It gives me a 1120: Access of undefined property classes.
Another something simple I'm doing wrong?
P.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|