Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Canvas, wstawienie kilku różnych jpg
MONII28
post 18.08.2017, 14:07:16
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


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.
Go to the top of the page
+Quote Post
trueblue
post 18.08.2017, 14:12:10
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Skoro w wyp jest adres obrazka (+ jest już listener na load), to dlaczego do wyp.onload jest przypisana funkcja?


--------------------
Go to the top of the page
+Quote Post
MONII28
post 18.08.2017, 14:18:21
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


W pierwszym przykładzie w wyp jest już obiekt new Image();
Go to the top of the page
+Quote Post
trueblue
post 18.08.2017, 14:21:06
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Wrzuć jakiś większy fragment tu: https://jsfiddle.net/


--------------------
Go to the top of the page
+Quote Post
MONII28
post 18.08.2017, 14:40:15
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


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
Go to the top of the page
+Quote Post
trueblue
post 18.08.2017, 14:45:11
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  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. });


Ten post edytował trueblue 18.08.2017, 14:56:47


--------------------
Go to the top of the page
+Quote Post
MONII28
post 18.08.2017, 14:52:12
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


Zmieniłam ale dalej tak samo ładuje się tylko ostatni
Go to the top of the page
+Quote Post
trueblue
post 18.08.2017, 14:55:56
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Wrzuć jakiś spreparowany przykład na serwis, do którego podałem link wyżej.


--------------------
Go to the top of the page
+Quote Post
MONII28
post 18.08.2017, 15:44:00
Post #9





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


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

Ten post edytował MONII28 18.08.2017, 15:41:12
Go to the top of the page
+Quote Post
trueblue
post 18.08.2017, 15:56:23
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


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. });


Ten post edytował trueblue 18.08.2017, 16:03:36


--------------------
Go to the top of the page
+Quote Post
MONII28
post 19.08.2017, 10:01:39
Post #11





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 10.01.2008
Skąd: małopolska

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


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ć?
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 Wersja Lo-Fi Aktualny czas: 26.04.2024 - 11:42