Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by failure13

  1. I got an amayzing results now, thank you sooo much for help!!!! It's almost equal to one single loaded image, so whole gallery is not memory stressing at all!! Just one last question before this thread would be completely solved, when i press next / previous buttons or left / right arrows, i am doing this: function reloadNewImage():void { if (loaderImages != null && contains(images)) { // each time next or previous button pressed - unload and remove images from screen loaderImages.unload(); // load new image, depend on which button was pressed loadImage(e); } } Is it correct? I call loaderImages.unload(); to unload previous picture, and then call loadImage(e); to load new one, with just passing new URL parameter for loader. I am not sure coz your methods always called dispose, so just for syntax sake... And if (loaderImages != null && contains(images)) do i need to check contains(images), withgs loader's logic, or it is unnecessary now? Oh, and i used , format: "binary" in DataLoader at some point, for experimenting, but do i need to keep it so in my case, or should i just delete this line? Again, thx for your help and patience, i got deep respect for your care & support!
  2. Wow...I'm kinda amazed, i've just try to make fast changes for the #NEW.fla i've sent to you, and what i found - it works and display everything, just as you said... But then i realized the difference, in my original code i've put var loaderImages before var images:MovieClip = new MovieClip();, so it haven't got chance to know what is container: images, right? Well, it seem to work, now i'll try to rebuild DataLoader this way, and will report my memory results.. And you're definately not first and not the last who have recommended me to switch for object-oriented aproach, but it's definately just not my thing... But who knows, probably some day, when i'll do some insanely hard and big project...))
  3. Well...Seem that it's not that simple I've changed this two things, as you said, like i've created global ImageLoader, and inside loadImage function i've just specified .url and then simply load loader...But for some reason nothing got displayed (no mistakes reported either)...What am i doing wrong? // loader for images var loaderImages:ImageLoader = new ImageLoader("", { name: "loaderImages", container: images, x: 0, y: 0, width: gW, height: gH, scaleMode: "proportionalInside", onComplete: loadImageNow }); // function that loads an image function loadImage(e:Event):void { // define image URL loaderImages.url = imagesURL[index]; // load image with loader loaderImages.load(); } Just try to change those little things in my new code, i'm sure you will understand what mistake i've made... Regarding the nested functions...Well, but in this case, according to your logic, this meant to be bad: // create new gallery instance var gallery3:MovieClip = addGallery( contentWidth, contentHeight, divLeft, divRight, divUp, divDown, "system/gallery/visualization1/visual##.jpg" ); // position gallery gallery3.x = 0; gallery3.y = 0; // name and add gallery on stage gallery3.name = "gallery3"; addChild(gallery3); function addGallery(gW, gH, imgLimitL, imgLimitR, imgLimitT, imgLimitD, pattern:String, XMLpath:String=""):MovieClip { ... function func1() { ... } function func2() { ... } ... return something } Right? But then i simply can't live without such an aproach, coz this is my way of implementing multiple instances... And also i got next question then... // BAD function textXML(e:Event):void { var galleryXMLLoader:XMLLoader = new XMLLoader(XMLpath, {name: "galleryXMLLoader", onComplete: processGalleryXML}); galleryXMLLoader.load(); function processGalleryXML(e:LoaderEvent):void { galleryXML = new XML(e.target.content); } } // GOOD function textXML(e:Event):void { var galleryXMLLoader:XMLLoader = new XMLLoader(XMLpath, {name: "galleryXMLLoader", onComplete: function() {galleryXML = new XML(e.target.content);} }); } Is this statement right, and good doesn not counts as faulty nested function logic? Well...And yeah, of course we think differently, so no worries I'am trying to make it simple for you to help me, as far as i can... Here i come of course for gs questions, not to waste your time too much... It's just sometimes as3 can get very very frustrating, and you're an expert, so chances you'll say what exactly fails gs or flash - are very high also!))
  4. Well kind of, but in that case, what is the syntax to make this? In this case that is exactly what i want, how would i alter the url for the existing loader? And please man, i hear you clear from 1st time, i am not asking you to rewrite code, or especially rewrite code not for free... What i'am asking is just to look on specific functions in this mess, and help me with syntax of gs Loaders, coz i'm not yet familiar with them on 100%... I was checking those links already, but as you can see my whole concept is a bit different (and i like the idea), it have worked nice with my previous code, just coz i used to create vars with lodaers outside the functions, but in this case i didn't know how to load outside gs loaders with specifing new URL parameter, that's all... I heard you...But why's that? I mean it's exactly same as classes, and i freaking hate class-written projects aproach, coz you have to import each time all the necessary stuff for flash, you have to write all of those private attributes, a lot of junk that really just narrows my thinking too much... So i would like to keep it that simple (in my opinion) way, coz so far i haven't got on a big trouble yet...
  5. Yeah, right! 1. Coz even if we exclude step 4 which i'm thinking now as useless - it is only loader left of those 3.. 2. In my original code if you will add loader.dispose(true); for function onNextError it will reduce memory consumption on like 50% (but only after you press next / previous to reload it). So when you dispose DataLoader at least it lower the memory consumtion a lot...But this doesn't seem to be a solution. I think i misunderstood the concept somehow, i want DataLoader & ImageLoader to be created once, and then just use it with different input...As if it would be that only thing that is changing is URL for ImageLoader, something like if it would've been created even outside function loadImage, and inside this function i would just specify like loaderImages.load(imagesURLreq); But i kinda suspect that each time it actually create a new loader...Which would expect memory-hunger, both for DataLoader & ImageLoader, but not for XMLLoader, coz it use physically one URL and one object...So it would pefrectly make sense, right? Any ideas how i should rewrite my loaders than? Well, according to memory It looks like this, but logic is exactly the same as with previous code, you can look on #OLD.fla file.. It still should load one at a time, according to my knowledge of as3, but i'm totally not sure about my gs Loader knowledge, so probably it is my mistake while making loaders... Do you think that #NEW.fla loads more than one picture at a time now on start (as far as the code and loaders logic goes, not thinking of memory)?
  6. carl schooff God! I can't believe that i forgot to write it!! From now on, you can call me mr. Dyslexic... Thx for digging and help!! It's awesome, works just as desired! I guess for this thread i don't got questions left, thank you very much for help guys, you ROCK!
  7. GreenSock I mean i want to control alpha of cotainer only (not content), outside of var loaderImages This is a great deal, for example in normal state of picture i want bgAlpha to be 0, but when picture is in fullscreen maxed i want it to be 1. to make background on top of everything (previously i have just to draw black rectangle and swap depths), but i guess it's kinda same for container of ImageLoader... carl schooff Ok, so it's just a type of content, which actually is container, for example if you got container: images, thanimage which is MovieClip type, will become automatically ContentDisplay type, and will react on each inside ImageLoader commands, right?
  8. That's awesome Carl! Thank you very much, it's even better than my solution above, coz it's still container: this, But i wonder, what exactly ContentDisplay is?
  9. import com.greensock.*; import com.greensock.easing.*; import com.greensock.events.LoaderEvent; import com.greensock.loading.*; import com.greensock.loading.display.*; import flash.events.Event; // create new gallery instance var gallery1:MovieClip = addGallery( 500, 500 ); // name and add gallery on stage gallery1.name = "gallery1"; addChild(gallery1); function addGallery(gW, gH):MovieClip { var images:MovieClip = new MovieClip; var loaderImages = new ImageLoader("Believe.jpg", { name: "loaderImages", container: images, bgColor: 0x1111111, x: 450, y: 300, width: gW, height: gH, scaleMode: "proportionalInside", centerRegistration:true, onComplete: loadImageNow }); // load image with loader loaderImages.load(); stage.addEventListener(Event.RESIZE, loadImageNow1); // function that loads image function loadImageNow(e:LoaderEvent):void { loaderImages.content.fitWidth = 800; loaderImages.content.fitHeight = 500; } // function that loads image function loadImageNow1(event:Event):void { loaderImages.content.fitWidth = stage.stageWidth - 100; loaderImages.content.fitHeight = stage.stageHeight - 100; } return images } I guess this way it works, coz it returns movieClip named images to display it on screen, and there are no error... But question about resize is still opened... + i would like to control bgAlpha: 0, parameter, after loader loaded, so it would fade container alpha from 0 to 1 slowly, how would i do this? ++ i also would like to controls loaded image alpha separately, to switch between images gently...Is it possible and how would you write such a thing?
  10. Not sure if i understand your question... What i want is just to display my image loader, without throwing error... http://www.sendspace.com/file/ugx3ad Check this file out, when i have tryed to do it so var gallery1:ImageLoader = addGallery(...); I've got even more errors... I guess gallery1 should always be MovieClip... Strange thing is that in my original code if i'll make it just as simplified one i've sent you - ImageLoader won't even display on screen, but here in simplifyed version it gets displayed even with this error... I'm stuck // P.S. And by the way, why resize even differs when you export and watch inside flash, and if you just load the same .swf outside of flash? I want it always to resize whole thing like it do now in flash. So that only the container get resized, and image would proportionally fit it.. flash http://s1.ipicture.ru/uploads/20120821/I29QAZTu.png swf http://s1.ipicture.ru/uploads/20120821/1ttTW9S1.png
  11. In my old code images was just a MovieClip that contained loader with image inside, now i wanted to rewrite it for ImageLoader, with container: this, coz this is really handy for numerous reasons, but for some reason i got this error: Question is - how to return ImageLoader with container: this property, so it wouldn't conflict? // create new gallery instance var gallery1:MovieClip = addGallery( contentWidth, contentHeight, "system/gallery/patr/picture.jpg" ); // position gallery gallery1.x = 0; gallery1.y = 0; // name and add gallery on stage gallery1.name = "gallery1"; addChild(gallery1); function addGallery(gW, gH, pattern:String):MovieClip { // path to load images var pattern:String; // set the size limits of gallery var gW:int; var gH:int; // loader for images var images:ImageLoader; // create a loader with necessary loading parameters images = new ImageLoader(pattern, { name: "images", container: this, bgColor: 0x1111111, x: 0, y: 0, width:gW, height:gH, scaleMode: "proportionalInside", }); // load image with loader images.load(); // return active objects for external functioins return images; }
  12. Yeah, this morning i've traced it too...Pretty weird. Oh crap, i've just realised why it happens, i have commented out stop(); on 1st frame, just to skip intro for you, and of course if it's not stopped before preload it will throw all kind of errors when gallery loading on low speed! Hell, i'm really sorry, it's hard to keep all details collecte, when simplifying in such a project.. Well anyway, this little issue is solved, but actual problem with memory is harder, and i can't solve it without your knowledge of gs... I'm afraid that it will be something like this little stupid stop() issue, if i'll try to simplify the code to needed state, so if you would check just few functions in the lines i specified in last mail, it would be more fail-safe, i'm sure... There are actually just few things to know, i got 3 loaders: 1) DataLoader to find image URLs in runtime through pattern. 2) XMLLoader to load xml with notes (if there are any of them) 3) ImageLoader to load image 1 by 1, not all at once or queue, just one at a time (at least that was a concept, but it seem that now all pictures loading memory). Just take a simple test, as i do...Pick a #NEW.fla for the test. It's default memory consumption now is ~62,4Mb. Note that all the test i've done belove was not in fullscreen, first thing i do is press esc on start, coz memory use is a bit higher in fs: 1. 501 line function onNextComplete, comment out loadImage(e); on line 512 It means in my code, that ImageLoader will never be used upon gallery loading. That way if you'll measure memory it will be ~56,5Mb. This is perfectly fine, coz 1st image is 3,66Mb, so it's lower than default consumption for almost single picture weight, so this i guess will exclude problems with ImageLoader. 2. same function, comment out just textXML(e); line 514 It means that XML with notes won't ever be loaded. Memory consumption ~62,1Mb. Perfectly fair, so it's not the XMLLoader alone either. 3. Try to comment out both loadImage(e); and textXML(e);, to check if it's their combination. Memory consumption will be ~56,2Mb, which again fair enough. 4. 497 line, loader.load();The only loader left is DataLoader, but in my code, if you'll comment it out it will be equal that all loaders are inactive. This way it will show 17,5Mb, which equal just the loaded project, without gallery embed code, so...I guess at least it clearly points out that DataLoader is the problem Loader in our case (well, or function) So that narrows problem to functions that lays between lines 486 to 524, and probably their references of vars...Which is not that swampy, right? This is the simpel test, that helps to narrow our search, and i guess it just can't be more narrow that that...
  13. Well it would be strange if it null, coz intro movieClip is on 1st frame, content layer, so i think it couldn't ever be null, no...? But weirdest thing, is that if you test it with low speed, you will get this error after the loader succesfully fades in, and everythging is loaded except gallery... So it should be somehow connected with gallery i guess. probably it is something wrong with those two? Maybe they somehow iterference with DataLoader's listeners when gallery loading? I'm kinda lost in guess... The idea was simply just to pre-load and show progress as intro.mainLogo alpha from 0 up to 0.5, and then from 0.5 to 1 just tween on loader's complete..
  14. Hmmm...Sorry, i found it, on other frame...Strange thing that without the gallery code - i never got this is error here...That's why i thought it's only gallery related function.. So this function is a main preloader for whole project /////////////////////////////////////////////////// PRELOADER ///////////////////////////////////////////////// // stop and go fullscreen on start //stop(); stage.displayState = StageDisplayState.FULL_SCREEN; // reset logo alpha on start intro.mainLogo.alpha = 0 // start listen for loading progress this.loaderInfo.addEventListener(Event.COMPLETE, loadComplete); this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress); // function that defines actions on progress function loadProgress(e:ProgressEvent):void { var preLoaderPercent:Number = (e.bytesLoaded / e.bytesTotal) * 0.5; // while progress, change logo alpha up to 0.5 TweenMax.to(intro.mainLogo, 0.5,{alpha: preLoaderPercent}); } // function that defines actions on complete function loadComplete(e:Event) { // load complete - remove listeners and continue this.loaderInfo.removeEventListener(Event.COMPLETE, loadComplete); this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadProgress); // logo appears fully from alpha = 0.5 TweenMax.to(intro.mainLogo, 1.2,{alpha:1, onComplete:intro.gotoAndPlay, onCompleteParams:["intro start"]}); } Strange that i never got this error while testing lower speed before.. Any ideas how i should rewrite this fragment? Probable with gs SelfLoader? About simplifying, sorry, but i can't really simplify it right now... But the only thing to check here is the gallery code, and this preloader, so this won't give you a lot of trouble, other than gallery code..
  15. Thing is that i don't got no function called loadComplete, so it's must be gs onComplete call, or some internal flash stuff i belive... Well, don't you mind if i'll post it in your PM, not on forum? I can do my old file with that fragment of code, so you can see that even if you change nothing in there - it will make ~350mb out of ~80 real... Or i can post my new code, where i rewritten already a lot of stuff...So you can try to eliminate this problem, and probably will look on anything else suspicious... But i'm pretty much sure that this is that fragmetn of code..
  16. Oh yeah, besides also when i try to simulate download speed lower than 200 kb/s i got an error all over the place, and nothing happen after: TypeError: Error #1009: Can not access a property or method with reference to the object "null". at _fla::MainTimeline/loadComplete()
  17. I am trying to re-write my old gallery code based on LoaderMax, so i've runned into some mad memory trouble, and just hope that this is my mistake... The fragments of code here i will provide, searching for availible files in specifide folder, by counting numbers and replacing ## with numbers, i really love this concept, and with my old code i had no trouble, it have used 80mb with my test image folder, but now when i have rewritten it for DataLoader it eat 350mb, which have just shocked me! Here's my new code with DataLoader: // create an array of URLs var imagesURL:Array = []; // single item URL that will be written inside an array var currentURL:String; // counter for current URL var currentNum:int = 0; // function that loads next URL until it fails to find valid combination function loadImagesURL():void { // load next URL index currentNum++; // current URL pattern, that replaces ## in pattern for a numbers currentURL = pattern.replace("##", currentNum); // create new loader that loads new URL on complete and stops on I/O error (when there are no URL availible) var loader:DataLoader = new DataLoader(currentURL, {onComplete: onNextComplete, onIOError: onNextError}); // load currentURL inside new loader loader.load(); } // function that adds URL inside an array function onNextComplete(e:LoaderEvent):void { // add current URL inside an array imagesURL.push(currentURL); // load next URL loadImagesURL(); } // function that stop searching for images when there are no URL availible function onNextError(e:LoaderEvent):void { // start listen for keys stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToArrowKeys); // set up buttons array for (var i:int = 0; i < galleryButtonsArray.length; i++) { // add listeners for previous / next click galleryButtonsArray[i].addEventListener(MouseEvent.CLICK, imageButtonsActions); } } Here's my old code with native loader: // function that loads next URL until it fails to find valid combination function loadImagesURL():void { // load next URL index currentNum++; // currentURL that replace ## in pattern for a numbers currentURL = pattern.replace("##", currentNum); // create new loader var loader:Loader = new Loader(); // load currentURL inside new loader loader.load(new URLRequest(currentURL)); // continue to load next URL inside an array loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onNextComplete); // if loader fails, than execute onNextError function loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onNextError); } // function that adds URL inside an array function onNextComplete(e:Event):void { // add current URL inside an array imagesURL.push(currentURL); // load next URL loadImagesURL(); } // function that stops when there are no other URLs function onNextError(e:IOErrorEvent):void { // start to listen for keys stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToArrowKeys); // set up buttons array for (var i:int = 0; i < galleryButtonsArray.length; i++) { // add listeners for previous / next click galleryButtonsArray[i].addEventListener(MouseEvent.CLICK, imageButtonsActions); } } Hope that there are some obvious error i missed... This is just a fragment of a huge gallery code, but since my testing gone - the problem in this part...
  18. 4. You mean, if i'll get rid of this bufferTime: 8,inside my VideoLoader - it will automatically do all the buffer thing to reduce stutter or too early start of video? O_O WOW! I mean, WOW!!!! 5. I suppose you meant like this? add scaleMode: "proportionalInside" This seem to work...And seem to work more than good! Hell, where have loaderMax been, when i was writing such a functions?! This was really hard and creative back in a day...But i guess now i can throw it in garbage, coz your function for sure is much more efficent!
  19. Thank you! You get it right, i've got an object on stage with my previous code, so this is kinda great help to know that LoaderMax creates container with it's built in code so easily! So i come to this kind of code now, for a simple intro video: // create video loader & specify it's parameters var introVideo:VideoLoader = new VideoLoader("system/intro/Moscow.mp4", { bufferTime: 8, container: this, width: stage.stageWidth, height: stage.stageHeight, centerRegistration: true, onComplete: playIntro, onError: videoOver }); // load video introVideo.load(); // add event listener for video complete introVideo.addEventListener(VideoLoader.VIDEO_COMPLETE, videoOver); function playIntro(e:LoaderEvent):void { // call resize function MovieClip(parent).onResize(null); } function videoOver(e:LoaderEvent):void { // load presentation MovieClip(parent).gotoAndPlay("start"); // remove video complete listener introVideo.removeEventListener(VideoLoader.VIDEO_COMPLETE, videoOver); // unload & remove video loader introVideo.unload(); introVideo.dispose(true); } And i got a few questions: 1. videoOver function is dedicated to go on "start frame", and completely unload everything that was created above, did i manage to unload everything right way? Do i need also to remove listeners attached to introVideo, or they will be removed automatically with .unload and .dsipose? 2. I have onError specified, which according to documentation, should fire whenever any error will happen, include I/O, did i get it right? (it's really cool feature then, if it's ultimate error reference!)) 3. So, video and image smoothing is on by defaul, rightt? 4. I've read on some tutorial this: What it is, and how exactly to use it? Sounds tasty! But how much efficent this method is? 5. This function here MovieClip(parent).onResize(null); calls for my global resize function, which looks like this: stage.addEventListener(Event.RESIZE, onResize); function onResize(event:Event):void { // get current stage size stageW = stage.stageWidth; stageH = stage.stageHeight; // center intro if (intro != null) { intro.x = stageW * 0.5; intro.y = stageH * 0.5; // resize intro video if it exist if (intro.video != null) { resizeMe(intro.introVideo.content, stageW, stageH); } } }[/quote] + famous contrain resize function... [quote] // proportional resize helper function function resizeMe(mc:MovieClip, maxW:Number, maxH:Number=0):void { maxH = maxH == 0 ? maxW : maxH; mc.width = maxW; mc.height = maxH; mc.scaleX < mc.scaleY ? mc.scaleY = mc.scaleX : mc.scaleX = mc.scaleY; } So whenever resize occurs, of course i got: TypeError: Error #1034: Error type Coercion: can not convert com.greensock.loading::VideoLoader@2f063101 in flash.display.MovieClip. Of course, coz this is Loader, not movieclip.... Which is the easyest and most efficent way to get past this error? I was thinking to try different scaleMode properties inside VideoLoader itself and just write: intro.introVideo.content.width = stageW; intro.introVideo.content.height = stageH; But there are no mode, which would keep pixel proportion, like resizeMe function do... So any advice here would be appreciated!
  20. I got this code here...And i feel kinda konfused, coz my logic is running through all of this functions (which are a lot in complete videoplayer code), but with loaderMax video loader, it seem that at least 50% of this code could done with just few lines... I really used to netStream so much, and it's hard to switch for something new, simple, and a bit different... // url to video file var strSource:Object = ("system/intro/Moscow.mp4"); // net connection object for net stream var ncConnection:NetConnection; // net stream object var nsStream:NetStream; // flag for flv has been loaded var bolLoaded:Boolean = false; // start intro video loading initVideoPlayer(); // sets up the player function initVideoPlayer():void { // create a new net connection ncConnection = new NetConnection(); ncConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); ncConnection.connect(null); // create a new netstream with the net connection nsStream = new NetStream(ncConnection); nsStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nsStream.client = this; nsStream.bufferTime = 8; // attach net stream to video object on the stage introVideo.vidDisplay.attachNetStream(nsStream); // set the smoothing value from the constant introVideo.vidDisplay.smoothing = true; // check if video loaded if(!bolLoaded) { // load stream nsStream.play(strSource); bolLoaded = true; } else { // start playing intro video playIntro(); } } // play video function playIntro():void { if(bolLoaded) { // play nsStream.resume(); // call resize function MovieClip(parent).onResize(null); } } How would it be right, and most efficent to rewrite such a simplifyed piece for loaderMax? And also i'm interested, if loaderMax have smoothing on or off by default? And if it doesn't have, then how to force it?
  21. Thank you very much Carl, i'm starting to learn!
  22. No i think everything fine then. I mean, obviosly i'm just a starting as3 programmer, and you know much more, so i come across to a friendly person that have developed best tween engine we can have for flash and java So basicly just wanted to make sure, coz in perfect World i would think that if you load something up, than when you unload it it should unload exactly same amount of memory byte-to-byte, but i guess we can leave it for perfect World, right? I think i have know everything i need yet for the LoaderMax, i will certanly read the documentation much more, and probably will use it against native loader, since it's much more easy to create it and define sometimes! P.S. Can you recommend me a good, examples of LoaderMax codes for loading images / video (against netstream i guess, or it still use netstream?) and xml? I'm just wonder to know "appropriate" use of it, than i would start to develop my own things with joy i guess! P.P.S. i just loose this project, for no reason, so right now i open for some steady rtfm to know even more possibilities
  23. Man, i'm extremely sorry! I was in rush, so forgot to change those things... Here's working example, check it out http://www.sendspace.com/file/i7pbep 1. In debug mode of player starting memory report 5,7, in non-debug mode 5,6. 2. When you load main menu 2 in debug mem 21,7, in non debug 32,97 (how's that? Debug usually use much more memory, and here everything is just reversed) 3. When you press main 1 to cleanup, debug mode 11,7, non-debug 21,10. So question is, why such a strange difference comes between debug and non-debug memory? And seconde question, why if you keep press main menu 2, memory increase for ~0,5 on each press? Do you think that all the pano content is unloaded this way and there are no leaks from it? I'm not sure what you're talking about exactly...It doesn't have error, and in fact this is the way they delete it on their site with native loader.. If you wanna check out memory without it, just delete those lines In this case, without thiis code, memory would stay almost exactly the same...This 6 tiles are pano itself, most heavy content in this .swf
  24. Well, i guess i can't simplify it more than that... I've put the cleanup code separately on last keyframe, so to lauch it (after loading swf in LoaderMax by pressing main menu 2) you just have to press main menu1 to clean.. http://www.sendspace.com/file/1z22j0
  25. Wow, sure it makes sense now!!))) Just what i wanted to get know about! Thx a lot