Actionscript 3 :: How To Reduce Memory Usages While Loading Sprite Sequences Of Images
Jun 7, 2011
I've made a *.swf file of the sprite sequences of 1000 images with (780 x 480) size. After that I embed this with another one class to show but every time it crushes during run time because of insufficient memory (assume that I have 2GB memory space). Which is the best way to implement such big sprite sequences in AS3 by avoiding the memory problem?
Im trying to create animations for use in sprite sheets for xna but am having some problems with exporting png seqeunces from flash with alpha.I know that if everything is on the main timeline then using the export as png seqeunce with alpha works fine, but when there are movieclip symbols on the main timeline, which themselves are animations, the movie symbols simply remain at their first frames on export.
Loading images into Flex (size < 100kb) causes IE7 memory increase by a megabyte per image. What's going on here? Here is the code I have -- this for each image:
I am working on an application, using Flash CS3 + AIR, that involves some heavy content loading. I need to fetch some 140 gif files each around 400x400 in resolution and 50KB in size and display them in a TileList. The code that I am using is pretty standard stuff, (excerpts from the cellrenderer of my TileList):
I have been working on an Actionscript 2.0 project that basically loads external images.Everytime i load and unload a new image, memory increases to 1 or 2 MBsIf all the images are in cache, then it increased to 4 or 8 KBsIn the unloading of images, I have removed loader and the container of the image.
It seems to work fine when I uploaded it to my testing site. It loads the correct swf and I can click on my menu link (the only other functional button with the action scripting) to go to another swf and it transitions correctly. Here is the problem:
After clicking on the menu link and trying to click back on the home link (containing the same swf as what initially loads) to redisplay the first swf, nothing happens. Then the menu button is unfunctional after that as well.
I've been pulling my hair out trying to get transitions sequences between externally loading swf's in my flash site.
I have a game built and I would like to reduce the loading time to the minimum possible.One of my ideas is to load the essential assets and some lower quality images the first time, leaving the higher quality images and some of the functionality out at first (for instance things like buttons that change the background color), and once the player enters the game, the rest of the functionality and its assets (images and sounds) will be loading in the background using the Loader class.So once the non-essential assets and the high quality images have loaded they will fade in and substitue the lower quality assets in the most subtle way possible.
Also... Would it be better to have various instances of a "Loader" class and try to load everything at once, or load stuff in order with a single instance of the "loader" class listening to the Event.COMPLETE event ?
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.
I am searching for a way to find out where elements in the library are used.I've just "inherited" a fairly messy .fla with most elements badly/unnamed and I'm trying to organize it.However there's up to 6-7 levels of reccursion and sometimes figuring out what is what is hard without finding where it's used.
I am new to Flash CS5 and I have created a slide show. I am trying to reduce the .swf file size for faster loading. I have been trying to adjust the size using the jpeg quality slider, but it doesn't seem to function whether I set it to 0 or 100 or anywhere in between. Publishing always generates the same size swf file.
The problem is... when I check the Task Manager the memory usage of the Flash player keeps going up and up without reducing everytime I click the "Next image" or "Previous Image" buttons. Even when loading the same image.I tryed many things to "unload" the image from the memory but none of them worked...
I'm using the Flash 9 AS3 Public Alpha IDE. I'm loading a suite of 256 external png images using the Loader class. There are multiple "suites" of these images, but once the .swf starts and a couple of settings are loaded, only one of the suites actually needs to be loaded for that session. Only a small handful of these images are displayed at a time, but this handful changed rapidly. Images are quickly loaded, animated, unloaded, etc. Currently I'm using the Loader class to load the images whenever I need them and then I remove them from memory when I'm done. Because they are used so often, and without much forewarning before they become needed, this solution is no longer effective.
If I place all of these images in the Library and setup their linkage properties individually, everything works fast and efficient loading them with getDefinitionByName, but this is not practical to have to recompile my .swf file everytime the images change (not to mention setting up the linkage for 256 images is very tedious). The other complication is that multiple classes that are not directly connected with each other need access to these images, which means the images need to have some sort of global access (like they with getDefinitionByName). most effecient way to load all 256 images into memory and then give them global access to be *quickly* reproduced, duplicated, multiplied and animated by any class?
I've made a script which loads in, at intervals, images in a sequence (image1.jpg, image2.jpg ). However I've being doing my nut as to how to remove the preceeding image from memory as looking a the Windows Task Manager, each image gets added again and again, accumulating memory usage. I've tried removeChild, and null; stuff, but to no avail.I want it to go through the 10 images, and with each step to the next image, remove the last one from memory.[code]
I have a loader SWF that runs some code in the background and loads other SWFs. Using this code:
private function loadScreensaver():void { screensaverSWF = new Loader(); var req:URLRequest; switch(areaNumber){
[code]....
I load the screensaver and add it to the stage. Using MonsterDebugger I can see that memory steadily rises from around 80mb upwards until the application exits (Im using windows projector). What I can't work out is why, there is no code attached to the screensaver SWF, just some timeline animations of things fading in and out.
EDIT:I've kept testing and found where I have an image that starts of stage then tweens on and off and is removed. When it loops it adds to memory again, as if the first image is still kept. This is all done on the timeline.
I have two images that are externally loaded through an imageLoader I made. What I want is to have both those images loaded into a sprite (like a container) so that when I animate them, they move as one, but I'm not sure how to go about doing this...
I wrote the following code to check memory when loading a big image (~20Mb). Every time I do mouse click, the application eats up memory, so something doesn't get deleted or cleaned with GC but I can't figure out what exactly.
imageLoader.as PHP Code: package { import flash.display.Loader; import flash.net.URLRequest; public class imageLoader { var fname:String [Code] .....
Is there an advantage to store loaded images into a sprite?
var container:Sprite = new Sprite();addChild(container);var pictLdr:Loader = new Loader();var pictURL:String = "banana.jpg"var pictURLReq:URLRequest = new URLRequest(pictURL);pictLdr.load(pictURLReq);pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);function imgLoaded(event:Event):void{ container.addChild(pictLdr.content);}
I've been given a task to create a program that will run an audio sequence. The goal of this is to press a button and have a audio sequence run where there are 3 different possible audio sequence outcomes. Each of the 3 sequences have a different % of being picked 20%, 50%, 30%. I came up with a break down of what i think i need to have happen:
within sequence 1 there are 4 audio clips once the second audio clip is played there is a 50-50 chance to skip the third clip and play the last or to continue and play all four.
sequence 2 has three audio clips
sequence 3 has one clip
I'm assuming i have to setup some kind of If then statements or maybe an array. I have only limited knowledge of action scripting with flash. Is there anyone that could point me in the right direction on how to accomplish this?
what to do in order to find the number of sequences in an array? for example: my array is: banana, banana, apple, banana, banana. what shell i do in order to get the numbers: 2,1,2? (2 bananas, 1 apple, 2 bananas).
I have been rendering large 3D frames as part of an animation for my main menu of my game. (1024*768) Very large.What is the best file format to import into flash as animation sequences, to get the best quality and compression out of flash. I am having trouble keeping file size down.
I have an interface that needs to load in external activity pages - there's quite a few of these. I've been trying to create an external class to take care of movie loads, but it has a bad memory leak. I've been reading about using unload() and unloadAndStop() but haven't gotten these to work (there are no noticeable differences in system memory usage or performance). Everything grinds to a halt once I've used up about 13+ Mb of memory.
The document class has lots of code (of course) so I'm just showing the code that relates here:
Code: package { public class Interface extends MovieClip { static public var _ui:MovieClip;
I have a problem in that i have a holder swf which loads in other swf's externally. My problem is that the holder loads all the movies in correctly but the memory usage of the swf just keeps going up and up even though i am trying to remove the movieclip after each has finished it's run.
I have a flash application running on some local machines. There are 3 movies the flash loads and plays. Each time a movie is played, it makes the amount of RAM the swf is using increase. This is being ran in a museum and users step through the 3 movies over and over and over, causing the swf to use gigabytes of RAM and eventually locking up the flash player.
Here's where I create the movie playback component.
ActionScript Code: var flvPlayer:FLVPlayback = new FLVPlayback(); addChild(flvPlayer);
The 3 movies are on 3 different frames in the timeline, for each frame I have this code that loads each movie.
I use the cuepoints to display some text on screen. I also call a function that does flvPlayer.stop(); each time the user navigates away from a movie frame. So is the RAM usage growing because of the flvPlayer.source = "whatever" being triggered each time the movie is called up?
I load image from url like this Code: imageholder = this.attachMovie("imageholder", "image", this.getNextHighestDepth()); imageholder.swapDepths(selectMenu); loader.loadClip(uri, imageholder.bigImage_mc); this== root, imageholder is MC that contains empty MC named bigImage_mc, selectMenu needs to be in front of loaded image (2nd line) and loader is MovieClipLoader()
Image is unloaded and removed like this Code: loader.unloadClip(imageholder.bigImage_mc); imageholder.swapDepths(selectMenu); removeMovieClip(imageholder); but when I unload image it doesn't free any memory, and when i load new image it increase memory usage...
I even tried Code: System.gc(); System.gc(); after removeMovieClip(); as I found this on some website... but with no improvement
I have a flv player that seems to only work in IE and not FF?? The player works fine in the flash authoring environment. Since it does work in a browser, that eliminates its being a sandbox problem.
Does anyone know if flash loading js classes into the container browser memory?