Mam taką funkcję:
initImg = function(image){ var img = new Image(); img.onload = function() { var obj = new Object(); //var propSzer = 'szer'; //var propWys = 'wys'; //var propTop = 'top'; //var propLeft = 'left'; //var propSrc = 'src'; if( this.width > this.height ) { obj[propSzer] = galery_w; obj[propWys] = obj[propSzer] / this.width * this.height; obj[propTop] = ( galery_h - obj[propWys] ) / 2; obj[propLeft] = 0; } else { obj[propWys] = galery_h; obj[propSzer] = obj[propWys] / this.height * this.width; obj[propTop] = 0; obj[propLeft] = ( galery_w - obj[propSzer] ) / 2; } }; img.src = image; obj[propSrc] = image; return obj; }
dalej muszę wykonać coś takiego:
var image = wymiary(zm3); $("#galery").append("<img src='"+image.src+"' alt='' />"); $("#galery img").delay(1000).animate({ 'top': image.top, 'left': image.left, 'width': image.wys, 'height': image.szer}, time3 )
Kombinowałem pół dnia, ale nic nie działa. Wartości objektu obj nie są widoczne poza funkcją onload (słusznie zresztą). Szukam podpowiedzi jak z funkcji onload przenieść wygenerowane wartości tak by były widoczne w funkcji initImg, a na koniec widoczne w miejscu gdzie muszę podać je jako wartości w .animate();
Próbowałem dodać własności do obiektu typu Image
img.onload = function() { //var propSzer = 'szer'; //var propWys = 'wys'; //var propTop = 'top'; //var propLeft = 'left'; //var propSrc = 'src'; if( this.width > this.height ) { this[propSzer] = galery_w; this[propWys] = this[propSzer] / this.width * this.height; this[propTop] = ( galery_h - this[propWys] ) / 2; this[propLeft] = 0; } else { this[propWys] = galery_h; this[propSzer] = this[propWys] / this.height * this.width; this[propTop] = 0; this[propLeft] = ( galery_w - this[propSzer] ) / 2; } };
Ale nie przyniosło to zamierzonych efektów. Czy obiekt typu Image można w ogóle rozbudować?
Obawiam się, że to co stworzyłem to w ogóle jakieś głupoty, więc liczę na jakąś podpowiedź i objaśnienia. Z góry dziękuję.