Flash :: CPU Performance Proeblems With Animation?
Jun 24, 2010
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.
I'm currently working on a project where i use SWFObject to include a flash header (some fire animation). Also I'm using jQuery for serveral animations and effects on the page, like Imagesliders and hovering effects.The problems I got:high CPU usage: about 50% on a Intel Q9550 low frame rates of jQuery animations due to the high CPU usage.The flash animation seem to stuck when i trigger any jQuery animations or effects.I tried to remove serveral jQuery animations and simplify the page, but also with only an hover menu, the flash animation stucks and the jQuery animations are laggy when hovering the menu.The only browsers where my page runs smooth are Chrome and Opera, but only with high CPU usage. FF3&4 and IE7-9 produce bad frame rates all time.I tried to reduce the jQuery internal fx interval, that seems to help, but the animations were not smooth any more. Am I the only one having this issue, i could not find any other postings here with that topic?!url...We changes the graphic card of the computer, from a GeForce 8400GS to a 8800GT. After that, the animation run smooth. I never thought that it would be the graphic card ^^
So, the actual act of scaling a vector object has a bit of a cost to the CPU, and so animating an object from one size to another has a significant cost -- but is there any additional cost for simply playing an animation that has previously been programatically scaled?
My initial thought was that if I took a character -- it's a little dude with a walk cycle, done in vector, and skooshed him to like 0.66 scaleX and scaleY then there would be some performance hit for even just playing his walk cycle in skooshed mode vs. playing it at normal size, but I can't manage to confirm my suspicion.
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?
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.
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 );
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.
i have a AS3/FL10 based application that renders/animates/filters (blur) large PNGs (1 per view) (about 1100x900 px, roughly 2mb). Due to the fact that the fans start spinning like crazy on my notebook, i wonder if this is considered "bad practise". Unfortunately i need transparent images, so JPG is not a choice. Additionally, the PNGs are loaded dynamically, so embedding the files to the flash file (for utilizing flash jpg compression) is not a choice either.
I have a lot of the following warnings:Duplicate variable definition.variable 'elem' has no type declaration.Illogical comparison with null. Variables of type Boolean cannot be null.Will they affect the performance of my flash application? Will they affect the compiling time?
I working on a game project in Flash AS3. I need to pass data from one class (Game) to other class objects (Ships) on EnterFrame and performance is starting to be a issue. I was wondering is there a difference in performance between calling to the Ship a direct function or dispatching an event which the Ship can listen.
another question is where should I put the enterframe function. Is it better to use only one enterframe function and call the methods dispatch events from there, or it will be wiser to put the enterframe in the different objects (Ships)? note: some Ships are inactive most of the time.
I know there are performance loses if you don't specify variable types explicitly. Do ActionScript/Java developer in general prefer the use of the in classes or no?
public function hello():void { this.speaker.says("hello"); }
Has anybody else noticed serious performance problems with the flash 10.1 debug player?With the non debugger player my swf runs cpu usages of about 5 -10% percent depending on whats going on.In debug mode it jumps up to 50 % and hangs and crashes. So at the moment it's impossible for me to actually debug my application in flex.
I am into an AS3 project where we have used strict OOP . We have around 2000 different controls(in different views) which can be classified into around 30 different types. Each of them have a base class and the rest are derived from them. Now we are reaching the finall stages of the project and we badly need some performance improvement.
We can broadly classify views into Single view(only one particular control is displayed) and group view(where 16 to 256 controls may be grouped). When dealing with these groups the performance comes down significantly that the knobs and faders jerk on moving. The single view knobs and the group view knobs logic is derived from the same base class..
Now i tried to listen to mouse move events at the stage level and on tracing the event target i found that all the objects are sending out mouse events.. Is there anyway to capture all the unwanted mouse events at the object level itself?
Been going crazy the last two days trying to figure this out. Can't get my head around it, so I thought I would ask here. I've programmed a fairly simple site in AS 2.0, using a couple of old functions like mx.transitions (still learning myself AS 3.0). The site is outlined like this:
- A main MovieClip on _root called mc_scene containing four different movieclips (doing this because I need to be able to run the Flash fullscreen and center the content). - This main MovieClip contains a simple header movieclip, a footer movieclip, a MovieClip holder (for loading images) and a Meny for controlling the different sections and loading.- Inside the main MovieClip there's four frames each containing a holder and buttons according to each section. - Each section movieclip contains some manual tweens and 1-7 (differs from each clip) buttons. - On the main _root scene I'm using BitMapData to fill a patterened background and centering mc_scene.
For some reason the performance of the application is slower in Internet Explorer 8. I've tried several tweaks but the performance difference still remains. The 'core' of the application, placing brushes on the canvas, is driven by a Timer event:
I allready tried the ENTER_FRAME option, this just slows both versions down (IE and FireFox).I mean Timer and slow performance in Internet Explorer? Or have other ideas to improve performance?
I am working on a large project and I would like some advices about improving the rendering performance when scrolling some content.I have a large sprite with a lot of content that I need to scroll and the problem that I am encountering is that when scrolling this big sprite, the rendering of the Flash Player seems to slow down and the movement is choppy.
I wrote a custom scrollbar class that simply updates the target sprite y or x properties on an enter frame event.The large sprite that I am scrolling mainly contains other sprites that have drawn shapes, loaded bitmaps and text fields.
Considering that I am simply moving the sprite, there are no other animations happening, nor other intensive processes at the same time, I do not think that it should be that resource intensive as to slow down the Flash Player that much. What can I do to improve the performance when scrolling the sprite ?(Just to give a rough approximation, the sprite that I am scrolling contains around 20-30 sprites with drawn shapes, 2-5 loaded bitmaps, 5-10 text fields.)
I have a certain set of motion twains that I've successfuly completed, they constantly loop right now (default), and is saved in the SWF file.I'd like to take that finished looping animation, and insert it within another animation (a) that can be played with a play button, and stopped/resetted with a stop button.How do I insert the completed looping animation into the main animation? And is there something special I have to do in the actionscript of the start and stop buttons so that the "inner" looping animation will start and stop with the "outer" main animation?