Flash - AS3 CPU Performance With 100 MovieClip Copies
Aug 16, 2010
I have a movieclip wich has a simple movement of a simple shape. This movieclip is copied many times to create a graphical effect. As the number of copies, or the complexity of the movieclip increases, CPU usage goes up. As from 90 copies, when I keep moving the mouse over the swf movie in a circle, playback stops (hangs). When the mouse movement stops, the swf continues again at the right position, as if calculation has continued, but updating the display has not. Now this is a quadcore pc, and we're 2010. I can't believe or accept that 100 mc's is the maximum number of movieclips that can be rendered. The obvious question is what can be done to optimize CPU performance ?
I'm using AS3, flash player 9.
Movieclip is a simple rectangle shape which moves along 1 axis.
var myLinkage:Class = Class(getDefinitionByName(getQualifiedClassName(McToRepeat)));
var newMC:MovieClip = new myLinkage();
containerMC.addChild( newMC );
I currently have one movieclip in my library, but 4 instances of it on the stage. I was wondering what the best way to animate them so they can do things 'separately'- I'm not sure if Actionscript is the answer, but it's worth a try. I just don't want all of them to move when I move one of them (when I try to animate them inside their movieclip).Possible solutions: I already have one that isn't very... resource friendly. For every individual instance I can turn it into it's own Movieclip, so it isn't affected by the rest... but if I were to have many, many movieclips on the stage, that would quickly overflow my library. If that's the only way fine, but I'm sure there's a work around.
I load images into my .xfl project and use them amond movie clips - everything is ok at beginning. But after a some moment (which is absolutely undefined) Flash Professional CS5 starts duplicating all of them at saving and new copies names with "Copy 1", "Copy 2" and so one, or just with blank string. Because Flash duplicates them EACH saving, so after a several savings Flash refuse to save at all (shows "Too big project ..." error).
I made a Post-It note movie clip that is draggable. I want to create a whole pad of notes, or at least simulate this. I thought the best way to do this would be to add another Post-It whenever the startDrag() is triggered.
I first tried creating the Post-It with symbols but didn't think I could dynamically create new ones this way. I then created a class and added it to the stage[code]...
I'm devloping some library classes for flocking/steering behaviours on large numbers of objects (2000+). I'm finding that at < 500 instances, performance is reasonable. As the numbers increase, framerate bogs down.
I've seen remarkable performance with libraries such as Flint or Box2D with ridiculous #'s of particles / objects, so it should be possible to optimize / refactor my code to be a bit better.
I'm aware of the basic optimizations, such as bitwise operations and optimized for loops. Are there any more fundamental approaches I should be considering? For example, currently each instance is a vector-based MovieClip. Would working with BitmapData be more efficient?
Will I take a big hit in performance using nested ViewStacks? Should I strive to handle all navigation in one ViewStack and push children manually or will the affected performance be negligible?
We have a medium size Flex 3.6 application that contains around 20 different page views (managed via a single lazy ViewStack) each having multiple components. Most use custom renderers.All model data is loaded at startup and changes to model instances are communicated via binding and/or collection change events.Once the user has viewed each page at least once, all page views are instantiated and happily listen to update events.Which in effect means that each time a model instance changes, all interested views receive that event and compute derived data or trigger item-renderers.I have tested and confirmed this behaviour in a proof-of-concept application. Even when setting a list to being invisible, it still listens to collection change events and invalidates any renderer affected.What would you do?
I've used the New Library panel to copy symbols from one Flash document to another & subsequently closed the extra Library panel. I did this twice for on different occasions.
My Library panel is usually docked & collapsed so ocassionally I use Crtl-L to expand it. Now, when I do that, the previous 2 extra Library panels also appear & I have 3 Library panels on the screen - 1 docked & 2 extra floating ones! How do I get rid of the other 2 for good?
I can run the same SF in two windows so that two copies of the same SWF are runiing at the same time.How can I run it in one window splitted into two halves vertically or horisontally?Is it possible to make a third SWF which would do that?
I know very basic AS and ran into a small problem. I have a movie clip that I would like to be duplicated when the user clicks on it and then they can drag and drop it anywhere while the original stays in its place. Right now I have that working, the user can drag as many copies as they want, however when you release the clip you are unable to drag it anymore. "x" is my movie clip.
I have multiple images in flash, all on the same frame. What actionscript do I need to use to be able to print just the one image and not everything on the screen? Also, is there a way to make multiple copies of the same image?[code]
i try to stream a sound i get this message on my output screen "SWF contains multiple copies of a sound item". The sound still plays, but some popping noises are added here and there throughout the recording
I'm working on a particle emitter, and I want to be able to pass in custom sprites (one for smoke, one for fire, et cetera). They are instanced on in the library as separate classes, but I want to be able to call a function like, "ParticleEmitter.SetSprite(Smoke)", then have it start creating instances of the smoke class.
The problem is, I don't know how to pass in a class name as an argument or how to use it to create copies. Is there any way to do this, or would it be best if I just put all my different particles inside a MovieClip and set the frame for each one it created?
I wished to create multiple copies of a variable in a loop.such as:
var pots:String = thisString [i]
and then i wish to reference one of these loop generated variables.Now how would you set it up so you could have all those variables of "pots" had their own names so one could reference say: "pots1" "pots2" or "pots17" ? This kind of situation would bee seen in a situation where I would be bringing in many array values and assigning certain parts of them to the variables. such as array[i][name]
It's easy to share bitmap data between multiple Images: // target and source are instances of the mx.controls.Image class var content_copy:Bitmap = new Bitmap((source.content as Bitmap).bitmapData);target.load(content_copy);
But how to do the same thing for movie clips with vector grapics? The only way I've found is to load movie clip using byte data of another movie clip as the source.
target.load(source.content.loaderInfo.bytes); But it actually duplicates the content.
I am writing a maze program for school. I am using a 2d array to represent to location of walls for the maze. The background (for figuring out where a player can move) is not the problem.I am using this algorithm for places the images...
for (i = 0; i < 22; i++) {for (j = 0; j < 16; j++) {if (maze[i][j] == 1) {instanceName = "wall" add i add j; //for multiple names for each instance duplicateMovieClip("wall", newname = "instanceName", 1); setProperty("instanceName", _x, (25*i+13));
[code]....
What needs to be done to use many copies of one instance to build the visible part of my maze? I want to be able to have all pieces anmed "wall" instead of "wall1", "wall2", etc...which isn't working anyway.
PowerMac Dual 2.3 GHz G5/8 GB RAM I suspect I'm not using best practices, as this is my first project, but my the flash file is getting very sluggish to work on. The swf (AS 2.0) publishes fine and runs OK off the server and in the browser, but the Flash application is slowing down to a crawl making work very unpleasant indeed. Not that it was ever that fast to begin with. The Flash file size is presently 15 megs. It's got a log of symbols in the library and a lot of small jpgs used as navigational buttons, and utilizes many instances of the loader component to dynamically load external files: Is this too much of a demand on the app's resources? I do think that some of this has to do with a poorly implemented user interface (first attempt by Adobe to make Flash "look and feel" like a CS app), but I'm sure there are other issues.
I was wondering, because people do suggest this, but i've never explicitly had it verified:does the flash cs4 compiler actually generate a SWF file, that is more optimized and faster, than the flash cs3 compiler?and what about other compilers? custom as3 compilers, are there faster ones?I don't mean the time it takes to compile the .fla, but the speed of the SWF file.
I've been working on simple animation for a client, which you can see __here__.I have a few issues with performance. I have popped a fps counter at the top left and it seems to only run at around 30 fps on my laptop, I need it up to 60 though.
i was just wondering if anyone had any tips about getting the best performance from flash.I have used Shape instead of Sprite on the curves, which gave a slight improvement. Surprisingly I didnt notice any change in performance when I dont use the blur filter on the curves, which was odd to me.
Test FrameRate in combination of browsers,flash plugin versions on Win32
Expect:
Framerate to be close in most cases
Observed:
I am seeing a 25% decrease in framerate under IE7 using Flash10b.ocx(10.0.22) and 50% decrease in framerate using Flash10c.ocx(10.0.32). PLugins under FireFox, Safari and in Mac OSX don't exhibit the same slowdown.
I would like to get help/confirmation on a performance problem that I see in Internet Explorer. The Adobe and Flash community is great on the Internet but I have been surprised to see no information on this, just a few reports about movie playback on 10.0.32 vs. 10.0.22.
My guess is that in IE flash plugin is passing draw calls to Win32 and that this is slow.
Instead of drawing each time on the bitmap using draw, cache the draw calls to a bitmap and use CopyPixels. When I do this the performance is the same across browsers, within 10%.
I'm a developer on nice space MMO using Flash. On new PCs performance is quite good, but some features shouldn't be enabled on older PCs because the framerate drops to shit if we do. Flash wasn't made for this, but hey, pushing boundaries is fun.
An example is fullscreen mode. Of course every user can manually enable it, but "advertising" it to a user with and oldie PC would be a bad idea - but for the Alienware crowd it would be dumb not to.
So I want to find out how "capable" a user's PC is to decide if I should enable or disable some features for him.
Well I'm having a hell of a time trying to get my CPU down under 45% when running my current application. I've tried all sorts of optimization tricks and tips with little success and I'm at a point now where I need a fundamentally different approach.
Problem and Current Approach In the main view of my application I have a single enterframe handler.I have my frame rate down as low as 10 fps. This handler notifies 16 seperate movie clips to draw wedges of varying angles using Lee Brimelow's wedge class. So, 16 times every enterframe, I have 16 movieclip graphic clear, begin fill, draw wedge, endfill all being co-ordinated by my single enterframe handler.
Looking for some recommendations on tools that can be used independent of the source (that is just on the swf) to check for Frames Per Second, total size and how often the movie loops.
We are using Adobe Flash to produce software for an interactive touch screen kiosk.I have 55 1024x768 24 bit PNG images.I want to play them (fairly regularly...once every 5 minutes or so) without them stuttering but can't find a good dependable way, main problem is I think Flash GC's them after an arbitrary idle period.Reason I'm doing this is because the FLV attempts we have made aren't sufficiently high quality.I also looked at using a H.264 but that obscures any other assets placed over it.I have a number of text fields sitting over this animation. The machine in question is a Core2 Duo, 4GB Ram, GeForce 9500GT.
I have a problem with my flash application because after a while that it is running, it eventually starts to slow down. My application involves something that needs to be replicated with the addChild() method. I've read some info on the internet which states that the cause of the slowing down or the lag in the application is that the removeChild() does not remove the child from the memory
Am currently working on a tool created by a colleague of mine and would like to improve performance. Basically, it's a tool for drawing on screen and uses a combination of Sprites and the Graphics class to draw a line segment every time the mouse is moved when the mouse button is down. Here is the drawing bit:
// on MouseMove protected function drawLine(e:MouseEvent):void { if (currentTool.thickness > 0){ //pen var line:Sprite = new Sprite(); line.graphics.lineStyle(currentTool.thickness, currentColour); [Code] .....
As you can see, it checks if the line 'thickness' property and draws if it is and erases if it isn't. I did think of using a technique similar to blotting here where it'd draw to a bitmap but I'm not sure this'd give the performance boost I want or if, indeed, there would be any way to have an eraser function. The drawing itself works nicely - this isn't the problem, it's the performance of the subsequent 'drawn' sprites.