ActionScript 3.0 :: From Movieclip Creation To Sprite Childs?
Sep 24, 2009
Creating an application for a client and figured now is a better time than any to make the jump from as2 to as3. I've read many articles and books to keep up to speed but I get constant errors everytime I add or change something. Its becoming beyond ridiculous and rather than searching another unrelated google result, I thought I'd post something here.
I am trying to create a county map of Illinois using x,y coordinates from a shp file. I have the x,y coordinates and the county names saved in a CSV file that I have no problem reading in via ActionScript 3 (and the map looks great), but in order to save time in my future application I would like to save each county shape as a permanent shape in my application and give them labels, i.e. Sprite1 (label='Champaign').
In case this is not possible I am trying an alternate solution: I create a new sprite (var spr:Sprite = new Sprite();) for each county, draw it using spr.graphics.drawPath, and give it a name (spr.name='Champaign') and then 'push' it to a vector of sprites (var xy_sprites:Vector. = new Vector.();). This would be great, but it doesn't work when I try to loop through each sprite in the vector and add an EventListener to that Sprite to pop up the name when you MouseOver any of the counties. Is the Sprite data type not the correct way to go about this or am a missing something about Sprites?
Some of my code to draw the shapes and save in a vector:
function drawXYMap(str:String):Vector.<Sprite> { var arr:Array = str.split(" "); var xy_Sprites:Vector.<Sprite> = new Vector.<Sprite>();
now MovieClip_1 contains one child _child_1. now by pressing button i want to add that _child_1 of MovieClip_1 to MovieClip_2 without removing from MovieClip_1.
i tried following code in button press event but it removes _child_1 from its past container.
var mc:MovieClip = MovieClip(MovieClip_1.getChildAt(0)); MovieClip_2.addChild(mc);
I am playing with papervision and is creating a carousel. For that I have used a tutorial on [url].., and hey - It works just fine.
But, i want to add the carousel within a holder(movieclip), so i have created a movieclip, placed it on the stage, and given it an instance name. Also, i have exported it for actionscript.
So, now instead of doing scene.addChild(plane); i tried to do planeHolder.addChild(plane); and that did not work out too well.
I've got a MovieClip which has bitmaps pasted onto it via AS3. These bitmaps are transformed and are sometimes over each others with transparency.So I would like to the grab the whole MovieClip as it is and make it a completely new bitmap. Problem is:
ActionScript Code: bitmapData.draw(mc) //does NOT work in this case (nothing shows) bitmapData.draw(mc.getChildAt(0)) // works, but it doesn't save the childs properties such as x,y coordinates and transparency
What I need is basicly a function such as "Image -> Apply Image" in photoshop.Except that it only copies a movieclip and not whole stage.
I have this problem that I don't know what causing it. This is what happened : I made an animation which is called anim.swf, in that animation i put some code to generate instance of movieclip from the library to be put on the stage using this code :
Is there another way to work with movieclip classes than attaching them from the library?For instance say that I have a textbox class that extends the movieclip class. Puts it on the scene and then I'm free to work with it from the class as I want.But inside this class I check if I need a scrollbar. If I do, then start a "sub-class" and create a scrollbar. I can have a movieclip in the library and attach it and have a new class on it. But what I want to do is write something like this
var clipScroll = createEmptyMovieClip("scrollBar", 3) clipScroll = new com.texts.text_items.ScrollBar
the problem is if I do like this the class that I start is just an object. I can't trace where it is, I cant create a movieclip inside it and trace where that is.
My code is simply looping through an xml file and creating 'pages' (which are later animated).
This has all worked fine but now I want to add a sprite over the entire contents of the page if the contents of the xml contain a URL.
At run-time I can see that the checks for the URL are being processed correctly and that the overlay is being generated, but I cannot "see" it on the page.
The following code is located in a for loop for every page in the xml file:
var page:Page = new Page(); //MovieClip in my library // ... other stuff var textMC:FadeText = new FadeText(xml); //load the text from the xml fragment for this page
[Code]....
I now believe it is something wrong with the XML. It is correctly parsed XML (otherwise FlashPlayer would throw exceptions in my face) and it appears that this code works on every page except the second. Further more, if the second page is set as visible (a flag in the XML determins if the page is created or not) then none of the other pages overlay works.
What is the difference between a movieclip and a sprite. Why some programmers using sprite instead of a movieclip? What is the advantage of using sprite? Can we use sprite in the stage? Will the sprite reduce the space occupation than a mc?
I want to send a string to a function and then, via the string reference a Sprite. Are theire any other ways to adress a sprite with a String value?I thought this[myString].alpha = 0.5; was gonna do the trick but i keep getting (1010: A term is undefined and has no properties.). I tried every possible solution it feels like. Delaring Strings locally and Global...but i can�t get it to work. And the String is well spelled btw![code]
I'm working on a pause function for my game. Instead of manually writing code to pause all possible animations that a movieclip has, I wrote a function that runs through its children recursively until it reaches the end. For each child it checks to see if it's a movieclip, if so it will run a stop() on it. This works fine, except that I noticed it wasn't pausing my walk cycle.
Upon some investigation I found that while I created the walk cycle as a movieclip, it is recognized by flash as a sprite when the game is actually loaded. This does not make sense because the walk cycle clearly has more than one frame. Adding any kind of code to the MovieClip will stop flash from seeing it as a sprite, so to fix this I can just go into the animation and add '//' to any of the frames.
Code: public static function togglePauseChildren(curObject:*):void { if(getQualifiedSuperclassName(curObject)=="flash.display::MovieClip") { if(curObject.numChildren>0) { for(var i:uint=0; i<curObject.numChildren; i++) { var curChild:* = curObject.getChildAt(i); [Code] .....
How do I reference MovieClips or Sprites created in the Document class from a custom class?[code]But I have a lot objects I want to reference so using the above method would take to long.I know I can do this to reference a MovieClip on the main stage from a custom class.[code]Would referencing the sprite created in the document class be similar?
I've googled out a lot of different stuff on this matter but nothing seems to work. I have a Sprite object which is used as a main container for other objects.The lowermost child of this sprite is a Bitmap which represents a background, the upper ones are MovieClips. These movie clips contain bitmaps. There are also DropShadow filters applied to these movie clipsThe problem is that when the main container moves, e.g. 1.3 pixels to to the right or to the left (doesn't matter) all those objects (movie clips contained inside of it) move like they snap to pixels. Well,it's obvious, they do. But is it possible to avoid pixel snapping for movie clips and sprites?I tried to set pixelSnapping of the bitmaps inside those MovieClips to "never", but it doesn't work. Removing all filters or drawing movie clip to bitmapdata doesn't help either.
how to animate a simple sprite for the 100th time, I hope I might found I more specific, and better explained answer to my problem. I'm trying to make a flash game, of course, and I want my main Player sprite to be able to play multiple animations based on specific input. So, a running right animation, a running left animation, a jump animation, and an attack animation.
I have a program that dynamically draws a polygon wherever the user clicks on the screen. (using lineto, moveto) However this polygon is always behind the other symbol objects on the screen even though its added last in the childlist. Is there an issue with depth when drawing symbols vs. drawing with lines? How can I ensure my dynamic object will display in front?
Is there a way to add text programmatically in as3 to a Sprite or a MovieClip without using the class TextField
TextField inherits from InteractiveObject which is kind of heavy for what I want to do: just display text (i.e. I don't want to interact with the text).
Note: I'm aware that there is a property selectable to make the textfield not selectable. This is not the point.
What more can be done if I extend MainClass with MovieClip rather than Sprite. I know that MovieClip extends Sprite and it has Timeline defined under it. But still how it will be usable to me by MovieClip ?
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.display.MovieClip; import flash.text.TextFieldType; [Code] ..... How to use Timeline if I replace Sprite by MovieClip ?
How do I make a clone of a Sprite or MovieClip at runtime? So that if I make changes to the copy, the original remains unchanged.
And you can turn any Sprite or MovieClick in a class? So that I can create instances of this class (using new) and thus create copies of the display objects.
I'm coding games that come with the graphics done. Unfortunately the designer has some bad practices, such as not using Sprite symbols - never. And the files have dozens (even hundreds) of symbols in the library, very few of them with any animation. I would like to re-brand such symbols as Sprite to save some CPU (and maybe even kB), but my graphics-related skills are very low. Where should I start? Check and convert the symbols at authoring time or it's possible to do this at runtime? Can I effectively convert a MovieClip to Sprite (I'm guessing casting to sprite won't help much) or another light image type?
I needed to group some simple geometries into a symbol in order to use it for hitTesting; And I think making them to derive from Sprite class is be better in performance than leaving them as from MovieClips? But then I have no need for setting them "export to ActionScript". exporting to AS and derive from Sprite, or just leave them as MCs ?
Is there a way to detect the type of a DisplayObject with a switch case statement?I noticed that you can check if the displayobject compared to the type returns true or false.
Trace(mydisplayObj is Sprite); //return true or false Trace(mydisplayObj is MovieClip); //return true or false
But isn't there an option to get the type of the displayObject directly?
like, switch (typeof(mydisplayObj)) { case Sprite: break;
I performed a benchmark test memory consumption by three DisplayObjects - MovieClip, Sprite, and Shape.
Below are results and method used. I just wanted to create instances. Test with adding instnaces to display list showed a slight difference in terms of memory consumption.
Observations: Sprite uses from 16 to 22% with average 18% less memory than MoviClip.
Shape uses from 42 to 55% with average of 46% less memory than MovieClip.
Shape uses from 32 to 42% with average of 35% less memory than Sprite.
test.fla's document class is Test.as test.fla's library has two MovieClips ThingMovieClip and Thing2MovieClip
I tried accessing the Thing.as public var thingState's property;
directly,
using something called Casting (??),
assigning an instance name,
but something that seemed so simple doesn't work,I commented the errors I got next to each way I tried,conversely how would I access the MovieClip Thing2MovieClip from Thing.as (which is a child of Test.as because that's where it's instantiated), it just doesn't recognise an object of its parent exists, here are the 2 classes:
I think i'm missing some basic but fundemental understanding of ActionScript 3 and I have no other knowledge of other scripting /programming languages either.when I follow tutorials exactly they seem simple enough, but then start applying what I think is logical usage then it throws up errors..