Creative COW SIGN IN :: SPONSORS :: ABOUT US :: CONTACT US
ADOBE DIRECTOR: HomeDirector ForumTagMotion Graphics

Re: Final checks (World's longest post!)

Cow Forums : Adobe Director
VIEW POSTS   •   ADD A NEW POST   •   SEARCH   •   CHANGE FORUM
Respond to this post   •   Return to posts index   •   Read entire thread


Re: Final checks (World's longest post!)
by Brodd Nesset on Aug 26, 2008 at 7:18:11 am

Hello! Hope this isn't too late for your project. I consulted a Rosenzweig book, and in the paragraphs regarding memory management there might be some interesting options to try out. Just might, because in general the automatic memory management in Director is pretty good. Director will preload members that it 'sees' in the score, and unload when reaching a memory limit. Sometimes this preloading isn't fast enough (for instance when a member isn't physically tied to a sprite in the Score - it is loaded by Lingo), sometimes 'silent' unloading isn't enough doe to other apps competing for the memory perhaps. Both circumstances could lead to at least hickups in performance, and potentially to crashes too.

preLoadMember "mymember1", "mymember2" will preload those members.
preLoad will preload the entire current movie, or a given number of frames.
There is also preLoadMovie "myMovie" which indeed preload a new movie into memory, allowing for a smooth transition.

unLoadMember, unLoad, unLoadMovie does the opposite. An example of how Lingo simplicity and effectiveness shines :-D

How much available memory do you have? Use freeBytes()
How much do you need for a given set of frames? Use ramNeeded(1,50) for the memory needed to play frames 1 - 50.
For the memory size of a specific member use member("myMember").size.
You can then of course compare this with 'freeBytes()'.
Note that if any of these exceeds 'freeBytes()', your app will not play as intended, or at all. Now, in today's modern computers there's usually ample memory, but: Director members actually needs contiguous memory to display. That is: a 100 mB video will not play on a computer with heavy fragmented memory, even if the total RAM is, say 2 gB! You can test for this with freeBlock() which will return the size of the largest chunk available.

If 'freebytes()' or 'freeBlock()' is exceeded, you should concider throwing a warning message, like
alert "The application have encountered a memory problem which will affect performance. This application will likely perform better if you close other programs running and even restart your computer."

Hope this can be useful. Cheers!







Her lips said "no!" but her eyes said "read my lips".



Respond to this post   •   Return to posts index   •   Read entire thread


Current Message Thread:




Note: If you are a registered user please click here to login before posting.

Your post will not be accepted if your name and email address are not registered in our database. Click here if you do not have an account.

Name
E-Mail Address
Subject
E-Mail me when someone responds
Just This Message   Entire Thread   None  

Message:



Note: The following are HTML characters and may cause parts of your post to disappear if not used correctly: < > &
To include any portion of the post in your response, highlight the desired text and hit the "Q" key. Read more...



Add your message signature


 


Note: By clicking "Post Direct" button above, you are agreeing to the Creative Cow's Code of Conduct.



FORUMSTUTORIALSMAGAZINETRAININGVIDEOS - REELSPODCASTSEVENTSSERVICESNEWSLETTERNEWSBLOGS

© CreativeCOW.net All rights are reserved.

[Top]