Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja onload, zwracanie wygenerowanych przez funkcję wartości
di@blo
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 9.03.2005

Ostrzeżenie: (0%)
-----


Witam
Mam taką funkcję:

  1. initImg = function(image){
  2.  
  3. var img = new Image();
  4. img.onload = function() {
  5.  
  6. var obj = new Object();
  7. //var propSzer = 'szer';
  8. //var propWys = 'wys';
  9. //var propTop = 'top';
  10. //var propLeft = 'left';
  11. //var propSrc = 'src';
  12.  
  13. if( this.width > this.height ) {
  14. obj[propSzer] = galery_w;
  15. obj[propWys] = obj[propSzer] / this.width * this.height;
  16. obj[propTop] = ( galery_h - obj[propWys] ) / 2;
  17. obj[propLeft] = 0;
  18. }
  19. else {
  20. obj[propWys] = galery_h;
  21. obj[propSzer] = obj[propWys] / this.height * this.width;
  22. obj[propTop] = 0;
  23. obj[propLeft] = ( galery_w - obj[propSzer] ) / 2;
  24. }
  25. };
  26. img.src = image;
  27.  
  28. obj[propSrc] = image;
  29.  
  30. return obj;
  31. }


dalej muszę wykonać coś takiego:

  1. var image = wymiary(zm3);
  2. $("#galery").append("<img src='"+image.src+"' alt='' />");
  3. $("#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

  1.  
  2. img.onload = function() {
  3.  
  4. //var propSzer = 'szer';
  5. //var propWys = 'wys';
  6. //var propTop = 'top';
  7. //var propLeft = 'left';
  8. //var propSrc = 'src';
  9.  
  10. if( this.width > this.height ) {
  11. this[propSzer] = galery_w;
  12. this[propWys] = this[propSzer] / this.width * this.height;
  13. this[propTop] = ( galery_h - this[propWys] ) / 2;
  14. this[propLeft] = 0;
  15. }
  16. else {
  17. this[propWys] = galery_h;
  18. this[propSzer] = this[propWys] / this.height * this.width;
  19. this[propTop] = 0;
  20. this[propLeft] = ( galery_w - this[propSzer] ) / 2;
  21. }
  22. };


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ę.
Go to the top of the page
+Quote Post
morthan
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 15.06.2010

Ostrzeżenie: (0%)
-----


Sprecyzuj co chcesz osiągnąć. To może pomóc forumowiczom.
Pozdro
Go to the top of the page
+Quote Post
raadecki
post
Post #3





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


  1. var initImg = function(image){
  2. var img = new Image(),
  3. galery_w = 300,
  4. galery_h = 300,
  5. obj = {},
  6. propSzer = 'szer',
  7. propWys = 'wys',
  8. propTop = 'top',
  9. propLeft = 'left',
  10. propSrc = 'src';
  11.  
  12. img.onload = function() {
  13. if( this.width > this.height ) {
  14. obj[propSzer] = galery_w;
  15. obj[propWys] = obj[propSzer] / this.width * this.height;
  16. obj[propTop] = ( galery_h - obj[propWys] ) / 2;
  17. obj[propLeft] = 0;
  18. } else {
  19. obj[propWys] = galery_h;
  20. obj[propSzer] = obj[propWys] / this.height * this.width;
  21. obj[propTop] = 0;
  22. obj[propLeft] = ( galery_w - obj[propSzer] ) / 2;
  23. }
  24. }
  25.  
  26. img.src = image;
  27. obj[propSrc] = image;
  28.  
  29. return obj;
  30. }


z grubsza chodzi o widoczność zmiennych... u Ciebie obiekt był zadeklarowany wewnątrz listenera onload... a powinien być w funkcji wyżej
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:09