js, eseménybekövetkezés általi feltételes ágú programfutás vezérles
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ó classez pedig a kérdéses metódusa 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
■ 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
var myImgPreLoader =
Class.create();
myImgPreLoader.prototype = {
initialize : function(aImgs,onLoaded){
this.onLoaded = onLoaded;
this.aLoadImgs = aImgs;
this.preloader(this.aLoadImgs);
},
preloader : function(){
this.aLoadImgs.each(
function(img,index){
this.currentImgIdx = index;
var tempImg = new Image;
tempImg.onload = this.preloaded.bind(this);
tempImg.onerror = this.preloaded.bind(this);
tempImg.onabort = this.preloaded.bind(this);
tempImg.src = img.src;
delete tempImg;
}.bind(this)
);
},
preloaded : function(){
if (this.currentImgIdx == this.aLoadImgs.length-1) this.onLoaded();
}
}
addImages : function(aInicImgs){
this.aInicImgs = aInicImgs;
if (!this.preLoaderLoaded)
{
this.preLoaderLoaded = true;
var now = new Date();
new myImgPreLoader([{src:this.loaderImg.src}],this._addImages.bind(this));
}
else
{
this._addImages();
}
},
Fut a kód, és semmi probléma nincsen, szóval csak aki ráér esetleg gondolkozhatna velem egyet :)
üdv t
meg az egész pakk
üdv t