Avatar billede cryptoknight Nybegynder
27. september 2002 - 09:20 Der er 8 kommentarer og
2 løsninger

Skyde en gif

Er de nogen der kan hjælpe mig med dette lille problem. Jeg skal have et script, der sender gif'er vandret hen over skærmen, som man så kan "skyde" så den falder ned.

Hvis du forestiller dig en fugl der flyver over skærmen fra enten højre eller venstre (fuglen skal selvfølgelig have næsen i flyveretningen). Når man så klikker på fuglen, skal gif'en laves om til en anden gif (af en død fugl), som så falder lodret ned.

(tænk på Moorhuhn, hvis du kender det)

Det kan måske laves med den kendte sne-effekt, bare med nogle modificeringer og så med den forskel, at 'sne-fnugget' skal skifte retning, når man trykker på det.

Jeg vil meget gerne have fulde løsninger, som jeg så selv kan ændre billeder i.


/CryptoKnight

Er det i øvrigt muligt at lave dette med en animeret gif?
Avatar billede cryptoknight Nybegynder
27. september 2002 - 09:47 #1
Det med den animerede gif er ligemeget. Jeg _har_ fundet ud af at det kan man godt...
Avatar billede Slettet bruger
27. september 2002 - 14:32 #2
Hmm, det var en interessant opgave. Jeg vender tilbage!
Avatar billede Slettet bruger
27. september 2002 - 14:32 #3
... snart!
Avatar billede Slettet bruger
27. september 2002 - 14:52 #4
http://phoenixv.h4f.dk/skyd.html

Billedet kommer frem efter et tilfældigt interval på 0-3 sekunder, og det flyver i en tilfældig højde!
Avatar billede cryptoknight Nybegynder
28. september 2002 - 22:50 #5
Tak phoenixv.
Jeg må sige at ser godt ud, men ikke helt så godt som jeg havde håbet. Der er nogle bugs i din kode, som jeg har siddet og rettet på:

- billedet dukker ikke op igen efter at det er fløjet ud af skærmen (den kører kun én gang)
- den flyver kun ind fra venstre og altså ikke fra en tilfældig side
- når man har skudt billedet, og den så dukker op igen (efter at man har rettet pkt 1 selvfølgelig...) så er billedet stadigvæk det 'døde' billede.

Her er hvad jeg har fået:
(Det er nok ikke den pæneste kode der er set, men det skal siges til mit forsvar, at det er det første jeg laver i Java-Script.)

=============================
<html>
<head>
<title>Hit me!</title>
<script>

function fly(){
dir = Math.floor(Math.random()*2);
if(dir == 1){
left();
}
else{
right();
}
}

function left(){
l = 100+(document.all) ? document.body.offsetWidth : window.innerWidth;
t = 0;
var obj;
var h;

doed = new Image();
doed.src = "http://www.eksperten.dk/img/partner_hp_small.gif";

flyver = new Image();
flyver.src = "http://www.eksperten.dk/img/eksperten_logo.gif";
skyd();
}

function right(){
l = -100;
t = 0;
var obj;
var h;

doed = new Image();
doed.src = "http://www.eksperten.dk/img/partner_hp_small.gif";

flyver = new Image();
flyver.src = "http://www.eksperten.dk/img/partner_poweredbyaccelerator.gif";
skyd();
}

function skyd() {
obj = (document.getElementById) ? document.getElementById("targ") : document.all.targ;
document.images["bill"].src = flyver.src;
document.images["bill"].width = 77;
document.images["bill"].height = 49;
w = (document.all) ? document.body.offsetWidth : window.innerWidth;
h = (document.all) ? document.body.offsetHeight : window.innerHeight;
t = Math.floor(Math.random() * (h - 30));
obj.style.top = t;
rand = Math.floor(Math.random() * 3000);
setTimeout(bevaeg, rand);
}

function bevaeg() {
if (dir ==1&&l > -100) {
l -= 10;
obj.style.left = l;
to = setTimeout(bevaeg, 50);
}
else if(dir==0&&l<w+100){
l+=10;
obj.style.left=l;
to = setTimeout(bevaeg, 50);
}
else{fly();}
}

var to;

function ram() {
clearTimeout(to);
document.images["bill"].src = doed.src;
document.images["bill"].width = 100;
document.images["bill"].height = 100;
bned();
}

function bned() {
if (t < h) {
t += 20;
obj.style.top = t;
setTimeout(bned, 50);
}
else{reset();}
}

function reset(){
obj.style.left=-100;
;
fly();
}
</script>
</head>
<body onLoad="fly();" scroll="no">
<div id="targ" onClick="ram();" style="position: absolute; left: -100px; top: 0px; cursor: crosshair;">
<img src="http://www.eksperten.dk/img/eksperten_logo.gif" width="77" height="49" name="bill">
</div>
</body>
</html>

===================================
Idet der var så mange ting der skulle rettets kan jeg ikke give dig fuld point. Meeeeeen du skal da have noget for din indsats, så du får 40. Er det ok?

Tak for hjælpen
CK
Avatar billede Slettet bruger
29. september 2002 - 11:12 #6
Der skulle rettes? Det var jo kun et udkast! Der stod ikke noget sted, at billedet skulle starte på ny, efter man havde skudt det! Ej heller stod der, at det skulle komme fra en tilfældig side!
Det er fint nok, at du klarede det selv, men du kan da ikke forvente at få det endelige svar på første forsøg, hvis du ikke beskriver hele problemet!
Avatar billede Slettet bruger
29. september 2002 - 11:13 #7
Der er overraskende mange herinde, der tror, at eksperter udover at være nørder også er tankelæsere. Og det er i hvert fald ikke tilfældet med mig!
Avatar billede cryptoknight Nybegynder
29. september 2002 - 23:47 #8
Undskyld hvis du følte dig stødt, det var slet ikke meningen. Jeg er _meget_ glad for din hjælp!! Jeg må bare have udtrykt mig forkert...

CK
Avatar billede Slettet bruger
30. september 2002 - 15:53 #9
Jeg føler mig ikke stødt, men jeg forstår ikke, at du regner med, jeg kan vide, hvad du vil have, når du ikke har forklaret det først!
Avatar billede Slettet bruger
30. september 2002 - 15:54 #10
Min fremgangsmåde i lidt sværere spørgsmål er den, at jeg ofte først lægger et udkast. Hvis spørgeren mener, at det er det, han vil have, så udbygger jeg scriptet med de ting, han beder om. Hvis udkastet er helt hen i skoven, så føles det ikke så åndssvagt at droppe det, som hvis man havde lavet et helt færdigt script!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester