Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Canvas, wstawienie kilku różnych jpg
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MONII28
Witam

Mam problem z wstawieniem różnych obrazów na płótno canvas
Ładuję mi się tylko ten ostatni, sprawdzałam zmienne są prawidłowo przekazywane. Problem jest z wyp.onload tak jakby się wykonywał kod tylko dla ostatniego.


  1. wyp.onload = function() {
  2. c.drawImage(wyp, s, d, xp, yp);
  3. };


Próbowałam również:

  1. var img = document.createElement("img");
  2. img.src = wyp; // w wyp jest adres obrazka
  3. img.addEventListener("load", function() {
  4. setInterval(function() {
  5. c.drawImage(img, s, d, xp, yp);
  6. }, 200);
  7. });


Kod wykonuję się w pętli

Jeśli ktoś już miał styczność z takim problemem bardzo proszę o pomoc.
trueblue
Skoro w wyp jest adres obrazka (+ jest już listener na load), to dlaczego do wyp.onload jest przypisana funkcja?
MONII28
W pierwszym przykładzie w wyp jest już obiekt new Image();
trueblue
Wrzuć jakiś większy fragment tu: https://jsfiddle.net/
MONII28
view-source:http://www.stronnet.pl/kalkulator-szafy/projekt_drzwi.js

Po przeciągnięciu zdjęcia płyty na obszar drzwi ładuje się poprawnie, po przeciągnięciu na następne ładuje się ostatnie.

Tworzenie projektu drzwi miałam w PHP ale ze względów na nową funkcjonalność (skalowanie i przesuwanie) zmieniam na JavaScript. W PHP trudno by mi było to wykonać. Wcześniej przy pomocy AJAXa miałam ładowany projekt.

Jeśli możesz mi pomóc będę wdzięczna

Pozdrawiam MONII28
trueblue
  1. img.addEventListener("load", function() {
  2. var _this=this;
  3. setTimeout(function() {
  4. c.drawImage(_this, s, d, xp, yp);
  5. }, 200);
  6. });

Odwołanie do załadowanego obrazka i setTimeout, nie setInterval.

lub
  1. img.addEventListener("load", function() {
  2. setTimeout( function() {
  3. c.drawImage(this, s, d, xp, yp);
  4. }.bind(this),1000);
  5. });
MONII28
Zmieniłam ale dalej tak samo ładuje się tylko ostatni
trueblue
Wrzuć jakiś spreparowany przykład na serwis, do którego podałem link wyżej.
MONII28
https://jsfiddle.net/rke2wxee/1/

Jak damy pętle na jeden element to wczyta poprawnie, jak damy na dwa to wczyta ostatni.
W dole widać obrazki jakie mają być wczytane
trueblue
Zanim się załadują obrazki, to s przyjmuje wartość 1*150.


  1. var img = document.createElement("img");
  2. img.src = wyp;
  3. img.s=s;
  4. img.addEventListener("load", function(s) {
  5. setTimeout(function(s) {
  6. c.drawImage(this, this.s, d, xp, yp);
  7. }.bind(this), 200);
  8. });
MONII28
Działa SUPER Dziękuję

Okazało się że pozostałe parametry również muszą być przypisane do obrazka. I następny problem rozwiązany. Super
Zastanawiam się jak teraz nad skalowaniem poprzez przeciąganie rogu. Czy da się to wykonać?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.