ugrás a tartalomhoz

js, eseménybekövetkezés általi feltételes ágú programfutás vezérles

toxin · 2006. Okt. 24. (K), 08.14
habár a téma címe, bonyolultnak hangzik, egész egyszerű a konkrét probléma, viszont keresek egy általános megoldást amit ezentúl használni tudok :)

szóval adott egy fixen pozicionált, banner(?)

http://toxin.hu/dynban/scroll.html

adott az ezt létrehozó class, aminek az inicalizáló metódusa, windows.onload-ban elhelyezve, viszont közvetlenül utána lefut a képek megjelenítéséért felelős metódus ( addImages ) , és itt jön a probléma a megjelenített képek mérete kisebb mint a preloader képé, ergo annak az előtöltését meg kell oldani, ha az előtöltést az incializáló metódusban helyezem el akkor, az addImages metódus még a preloader kép letöltése előtt lefut (ergo nem lesz loading kép), azt találtam ki, hogy az addImages-t szedem ketté azaz

ez az előtöltés biztosító class
  1. var myImgPreLoader =  
  2.   
  3.     Class.create();  
  4.     myImgPreLoader.prototype = {  
  5.           
  6.         initialize : function(aImgs,onLoaded){  
  7.             this.onLoaded = onLoaded;  
  8.             this.aLoadImgs = aImgs;  
  9.             this.preloader(this.aLoadImgs);  
  10.         },  
  11.           
  12.         preloader : function(){  
  13.             this.aLoadImgs.each(  
  14.                 function(img,index){  
  15.                     this.currentImgIdx = index;  
  16.                     var tempImg = new Image;                      
  17.                     tempImg.onload = this.preloaded.bind(this);  
  18.                     tempImg.onerror = this.preloaded.bind(this);  
  19.                     tempImg.onabort = this.preloaded.bind(this);  
  20.                     tempImg.src = img.src;  
  21.                       
  22.                     delete tempImg;  
  23.                 }.bind(this)  
  24.             );            
  25.         },  
  26.           
  27.         preloaded : function(){  
  28.             if (this.currentImgIdx == this.aLoadImgs.length-1) this.onLoaded();           
  29.         }         
  30. }  
ez pedig a kérdéses metódus
  1. addImages : function(aInicImgs){  
  2.         this.aInicImgs = aInicImgs;   
  3.         if (!this.preLoaderLoaded)  
  4.         {  
  5.               
  6.             this.preLoaderLoaded = true;  
  7.             var now = new Date();  
  8.             new myImgPreLoader([{src:this.loaderImg.src}],this._addImages.bind(this));    
  9.         }  
  10.         else  
  11.         {  
  12.             this._addImages();  
  13.         }  
  14.     },  
a this.preLoaderLoaded false-ról indul, az itt látható a feltételes programfutási elágazás ami a képelöltés után meghivja a már valóban a feladatott megoldó (_addImages) metódust (lásd forrásban), de a megoldásom nem érzem elegánsnak, ergo kihogyoldaná meg?

Fut a kód, és semmi probléma nincsen, szóval csak aki ráér esetleg gondolkozhatna velem egyet :)

üdv t
 
1

meg az egész pakk

Anonymous · 2006. Okt. 24. (K), 08.23
http://toxin.hu/dynban/dynban_toxin.zip

üdv t