Autor Zpráva
peteruu
Profil *
Zdravím,
našiel by sa niekto kto by mi pomohol s nasledujúcim problémom adresa
cieľom je aby daný obrázok čo je tučniak po kliknutí na jednu zo vzoriek automaticky vyplnil tučniaka danov vzorkov, napr. pri načítaní to spraví bez problémov pretože obrázok tučniaka je farebný a proste ho nahradí danou predvolenou vzorkou lenže potom po kliknutí už to nefunguje. Už dlho sa s tým babrem a neviem už čo ďalšie vyskúšať.
Ak má niekto skúsenosti s daným problémom veľmi by som uvítal každú pomoc.

Peter.
TomasJ
Profil
Vidím jen obrázky, které se po kliknutí mění. Co je za problém?
Nějak jsem nepochopil čeho chceš docílit? Aby tučňák měnil barvu, nebo aby se měnilo pozadí?
peteruu
Profil *
aby menil barvu podla vzoriek.. ale len tucniak.. je to vlastne png obrazok s priesvitnym pozadim.. takze ako vidis ked das nacitat stranku tak ten tucniak ma nejaku vzorku.. ale uz neviem docielit aby aj po kliknuti na vzorky sa ta vzorka menila.
proste najprv je hnedy a potom bude taky do cierna, a tak dookola
pako
Profil *
peteruu:
ak chapem dobre to co som cital, tak by si chcel menit obrazok na pozadi obrazku tucniaka. najjednoduchsie by asi bolo menit pozadie divu v ktorom by si mal umiestneny ten obrazok.
peteruu
Profil *
nechcem menit pozadie za tucniakom. To robi aj teraz ale nie je to spravne... Ja chcem vyplnit vzorkov tučniaka.
stranka tu je prakticky priklad naco mi to treba.. vlastne budem menit farbu rôznych objektov podla urcitych podkladovych vzoriek
TomasJ
Profil
Tvůj příklad používá Flash. Obávám se, že JavaScriptem to nepůjde, tedy já o žádném takovém způsobu nevím. Jedině si naházet ručně různé ukázky a pak jen měnit cíl.
pako
Profil *
keby si skusil spravit transparentne tie casti tucniaka, ktore chces vyplnit vzorkou a zvysok urobit nepriehladne/polopriehladne ?
peteruu
Profil *
musi to ist nejak... ako vidite pri prvom nacitani to pekne spravi... (tučniak je vyplnení vzorkou ) no po tom kliknutí to už nerobí tak ako by malo. A s tou transparentnostou to nikam nevedie potrebujem to tak ako to je teraz.
peteruu
Profil *
problem vyriešený, ak sa bude chcieť niekto inšpirovať v budúcnosti, prikladám javascript
$(document).ready(function () {
var ctx = document.getElementById("a").getContext("2d");
var test= new Image();

test.src = "tux.png";
test.onload = function() {
    ctx.drawImage(test, 0, 0);   
}

$('.klik').click(function() {
var adresa = $(this).children('img').attr('src');
var image = new Image();

function drawPattern() {
    ctx.globalCompositeOperation = 'source-in';
    ctx.fillStyle = ctx.createPattern(image, "repeat");
    ctx.fillRect(0, 0, 300, 300);
}
image.src = adresa;
image.onload = drawPattern;


});
});

<body>
  <canvas id="a" width="300" height="300">Canvas not supported on your browser</canvas>

  <div style="position:absolute;top:50px; left:400px;">
  <div class="klik"><img src="1.png">klikni pre obrazok 1</div>
  <div class="klik"><img src="2.png">klikni pre obrazok 2</div>
</div>




</body>
_es
Profil
peteruu:
test.src = "tux.png";
test.onload = function() {
Udalosť onload by mala byť nastavená pred zadaním src. Inak hrozí, že nebude zachytená - ak je obrázok v cache pamäti prehliadača.
TomasJ
Profil
peteruu:
Jen taková poznámka: IE 8 nepodporuje <canvas> :)
peteruu
Profil *
_es
nemôže to byť tak nastavené pretože onload predsa využíva daný obrázok a teda musí byť jeho adresa známa ešte pred načítaním alebo sa mýlim? A keď som to aj vyskúšal tak už to nefungovalo

TomasJ bohužial neviem ako to inak nahradiť pre daný prehliadač ak máš nejaký nápad budem vďačný, no mám pocit že jediná cesta je canvas.
TomasJ
Profil
peteruu:
nemôže to byť tak nastavené pretože onload predsa využíva
No právě, že tím test.onload jen nastavíš událost (co se bude dít) po načtení obrázku, adresa být známá nemusí. Teoreticky by událost měla být nastavená ještě před nastavením adresy, jak píše _es.

ak máš nejaký nápad
To bohužel nemám. Já bych to řešil jedině přes Flash (který bych se musel nejdřív naučit).
Chamurappi
Profil
Reaguji na peteruu:
bohužial neviem ako to inak nahradiť pre daný prehliadač
Filtrem Compositor. Funguje od Exploreru 5.5.

Jinak já bych na tvém místě spíš než <canvas> použil postup nastíněný v [#7].


Reaguji na TomaseJ:
Teoreticky by událost měla být nastavená ještě před nastavením adresy
I prakticky. Pokud mám obrázek v keši, tak k onloadu klidně může dojít hned, jak se nastaví src.
peteruu
Profil *
takže nakoniec som dal src za onload a už mi to aj ide ( ja som to predtým dával do tej udalosti onload preto my to nešlo ), konečne do toho trošku viac vidím :)
bohužial projekt na ktorom budem pracovať je strašne veľký a robiť to ešte aj pre explorer zatiaľ nepripadá v úvahu (v 10 už canvas ide), každopádne ďakujem za typ do budúcna určite využijem, a čo sa týka odpovedi [#7] tak tú nemôžem využiť pretože toto bol len taký vzor ja idem robiť niečo iné, a potrebujem mať okolie obrázka úplne priehľadné.

Díky všetkým za rady.
Chamurappi
Profil
Reaguji na peteruu:
projekt na ktorom budem pracovať je strašne veľký a robiť to ešte aj pre explorer zatiaľ nepripadá v úvahu
Tomu nějak nerozumím. Když je projekt velký, tak je určený jen vyvoleným uživatelům a nevyplatí se obětovat půl hodiny na vyřešení drobné triviality?
Já tomu teď tu půlhodinu zkusil věnovat. Nevím, jak v jiných verzích Exploreru, ale v sedmičce to šlape. A kdo nemá ani <canvas>, ani filtry, ten aspoň uvidí obrázek.

(v 10 už canvas ide)
V devítce také. Tvoje ukázka v ní nefungovala, protože ses neobtěžoval přepnout ji do standardního režimu.
peteruu
Profil *
díky moc vypadá to dobre, a dám teda na tvoju radu a budem sa to snažiť spraviť na všetky prehliadače. (pre niekoho je to pol hodina, iný by sa s tým trapil celé dni kým by to skonštruoval, asi je jasné že nie si žiadny začiatočník v tomto )
a čo sa týka toho štandardného režimu, mal si namysli prepnutie prehliadača do toho režimu?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: