Avatar billede baitianlong Nybegynder
28. februar 2002 - 01:49 Der er 61 kommentarer og
1 løsning

stjernehimmel

Hej . Jeg har været ved at prøve at lave en stjerne himmel, dvs. Et konstant antal af hvide prikker på 1 pixel, der dukker op tilfældige steder, og slukker en tilfældig, når der tændes en ny.

Det ultimative ville være et lille actionscript, der laver screensaveren i windows "starflight". Det må da være enkelt. En prik skal dukke op med random_x og _y, og så skal den lægge den halve bredde/højde af filmen til værdierne, og køre derhen (evt. medens den vokser til dobbelt størrelse.)

Kom så Barklund, lingoman, Paask og de andre seje. -Den er da nem (men ikke for mig)
Avatar billede ditlev Juniormester
28. februar 2002 - 03:02 #1
Avatar billede baitianlong Nybegynder
28. februar 2002 - 03:45 #2
Det er en lidt "tynd" tweening løsning. Det kan scriptes på få linier...
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 10:18 #3
www.pote.dk/flashfiles/stars.zip

har lavet en til dig
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 10:18 #4
og det var et svar
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 10:18 #5
der skal nok nogen modifikationer til, men det var hvad jeg lige kunne ryste ud af ærmet
Avatar billede barklund Nybegynder
28. februar 2002 - 14:28 #6
lav en prik som MC. Giv den instance "star" og script:

onClipEvent(load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = maxdepth;
        while(i--)
            this.duplicateMovieClip("star_" add i,i);
        popInterval = 5;
    } else {
        _x = 550 * Math.random();
        _y = 400 * Math.random();
    }
}
onClipEvent(enterFrame) {
    if (_name eq "star" && !(++t%popInterval)) {
      i=(i+1)%maxdepth;
      this.duplicateMovieClip("star_" add i,i);
    }
}

/Barklund
Avatar billede barklund Nybegynder
28. februar 2002 - 14:38 #7
Nu når det er oppe vil jeg opfordre til, at vi laver en Voxel konkurrence... Den har været oppe på were-here.com, men jeg nåede ikke at være med...

Reglerne er:

Lav en flash film 300*300 pixels. Lav et symbol, der inderholder en hvid firkant uden border på 1*1 px med centrum i centrum. Ingen linkage. Ingen andre symboler. Placer dit symbol på stage. Skriv kode i første (og eneste) frame af mainstage eller som Object Actions på det indsatte symbol (det må godt have et instancenavn).

Der må skrives max 50 liniers kode. En kode linie er en linie, der skal slutte med ";" eller "{" fx:

a = b = 4;

Er 1 linies kode.

if (b>(a = 5)) b = 0;


Er 2 liniers kode.

myFun = function(var) { return null; };


Er 2 liniers kode;

Er det noget?

/Barklund

PS: Jeg har lavet en space-invaders-spil på dette... :o)
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 14:50 #8
må dette lille MC kopiere sig selv?
Avatar billede barklund Nybegynder
28. februar 2002 - 15:01 #9
Lige så mange gange du lyster... fps er skal sættes til 12, men der er ingen krav til den opnåede...
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 15:03 #10
kan du da ændre på framerate via kode?
Avatar billede barklund Nybegynder
28. februar 2002 - 15:04 #11
Næ, men skriver du tunge løkker, så går den ned...
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 15:16 #12
nåh ja ok, på den måde
Avatar billede barklund Nybegynder
28. februar 2002 - 15:21 #13
Men var det en ide? Hvem vil være dommer? Måske en grafiker uden særlig kode-erfaring...
Avatar billede pixelpaw Nybegynder
28. februar 2002 - 15:46 #14
jeg har allerede en ide
Avatar billede barklund Nybegynder
28. februar 2002 - 15:52 #15
Avatar billede barklund Nybegynder
28. februar 2002 - 16:01 #16
Hov, jeg så slet ikke:

"og så skal den lægge den halve bredde/højde af filmen til værdierne, og køre derhen (evt. medens den vokser til dobbelt størrelse.)"

Her er et modificeret script:

onClipEvent(load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = maxdepth;
        while(i--)
            this.duplicateMovieClip("star_" add i,i);
        popInterval = 5;
        _root.width = _root.height = 400;
    } else {
        _x = _root.width * Math.random();
        _y = _root.height * Math.random();
        var angle = Math.atan2(_y-_root.heigth/2,_x-_root.width/2);
        var len = Math.sqrt(_root.width/2*_root.width/2+_root.heigth/2*_root.heigth/2);
        var end_x = len*Math.cos(angle);
        var end_y = len*Math.sin(angle);
        var number_frames = 40;
        step_x = (end_x-_x)/number_frames;
        step_y = (end_y-_y)/number_frames;
    }
}
onClipEvent(enterFrame) {
    if (_name eq "star")
        if (!(++t%popInterval)) {
            i=(i+1)%maxdepth;
            this.duplicateMovieClip("star_" add i,i);
        }
    } else {
        _x += step_x;
        _y += step_y;
        _xscale += 10;
        _yscale += 10;
    }
}
/Barklund
Avatar billede paask Nybegynder
28. februar 2002 - 23:29 #17
Hey meget sjov idé med noget voxel konkurrence Barklund. Tror bare at jeg vil få problemer med at skulle lave noget ordenligt under de forhold... men det kunne da være sjov at prøve!

Legende, er Paw og Barklunds eksempler ikke helt fino?
Avatar billede davidchristensen Praktikant
28. februar 2002 - 23:31 #18
Barklund, jeg vil gerne være dommer. Som du måske kan fornemme, så er jeg vist ik så klog hvad angår actionscripting.. Men jeg kan da se hvis noget både ser godt ud og indeholder et koncept der gør sig bemærket :)

David
-
Avatar billede baitianlong Nybegynder
01. marts 2002 - 03:23 #19
Jeg har lige været væk i dag, beklager. Men mange tak for at du kom forbi, Barklund..
Jeg skal lige afprøve scriptet, jeg formoder det er det sidste du har skrevet, jeg skal kigge på !!
Vender tilbage i morgen.
Avatar billede baitianlong Nybegynder
01. marts 2002 - 03:40 #20
BARKLUND>> Den er ikke helt tilfreds. Dit første script tegner bare en prik et eller andet sted, og det er det !!

Det andet script giver denne fejlmeddelelse:

Scene=Scene 1, Layer=Layer 1, Frame=5: Line 28: 'else' encountered without matching 'if'
        } else {

Scene=Scene 1, Layer=Layer 1, Frame=5: Line 34: Unexpected '}' encountered
    }

-Håber på mere feedback.. -legende
Avatar billede baitianlong Nybegynder
01. marts 2002 - 03:42 #21
For at forenkle spørgsmålet, og hvad det er jeg genre vil have, så kig på den windows screensaver, der hedder starflight, eller noget lign.. Det er præcis det jeg gerne vil have (evt. med rotation / hastighed, jeg selv kan ændre). Jeg vil nødig forvirre dig/jer !!
Avatar billede paask Nybegynder
01. marts 2002 - 03:44 #22
Jeg prøvede det tidligere, der mangler kun en tuborg  } :0)

Er lidt på rødvin nu, så mere saglig kan jeg ikke blive ...

onClipEvent(load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = maxdepth;
        while(i--)
            this.duplicateMovieClip("star_" add i,i);
        popInterval = 5;
        _root.width = _root.height = 400;
    } else {
        _x = _root.width * Math.random();
        _y = _root.height * Math.random();
        var angle = Math.atan2(_y-_root.heigth/2,_x-_root.width/2);
        var len = Math.sqrt(_root.width/2*_root.width/2+_root.heigth/2*_root.heigth/2);
        var end_x = len*Math.cos(angle);
        var end_y = len*Math.sin(angle);
        var number_frames = 40;
        step_x = (end_x-_x)/number_frames;
        step_y = (end_y-_y)/number_frames;
    }
}
onClipEvent(enterFrame) {
    if (_name eq "star"){ // tuborg her
        if (!(++t%popInterval)) {
            i=(i+1)%maxdepth;
            this.duplicateMovieClip("star_" add i,i);
        }
    } else {
        _x += step_x;
        _y += step_y;
        _xscale += 10;
        _yscale += 10;
    }
}

Håber jeg kan lave et forslag i løbet af i morgen :0)

mvh
paask
Avatar billede baitianlong Nybegynder
01. marts 2002 - 03:49 #23
Paask>> Hvem hulen er sommerfrisk kl. 3.47 ?? (o;

Jeg tester lige scriptet, men den skriver jo også at der er noget galt med else og if, og det synes jeg ser rigtigt ud (med min spinkle kunnen), prøv at se de to if'er, inden i hinanden, og den efterfølgende else, det ser MYSTISK UD !?!?!!?!!?!
Avatar billede baitianlong Nybegynder
01. marts 2002 - 03:53 #24
Hæ hæ, nu kører det, men det ser sgu underligt ud !!! De flyver opad og til venstre alle sammen, og i en underlig bevægelse !!! KULT
Avatar billede paask Nybegynder
01. marts 2002 - 03:55 #25
Ja den er pænt stenet ;0)
Avatar billede baitianlong Nybegynder
01. marts 2002 - 04:05 #26
Jeg håber du, eller Barklund, lige kan "rette til" så jeg kan komme ud og flyve i stjernerne . . . - - - . . . Mød mig på Cassiopeya.

"Den allersidste daaaaaaaaans , før vi går hjem !!"
Avatar billede paask Nybegynder
01. marts 2002 - 04:10 #27
Hehe, jeg er vist ikke den eneste med lettere tilsidebøjede tanker nu...

Jeg har en idé til at lave effekten, men kan ikke magte at lave det nu.

Sov godt ;0)
Avatar billede baitianlong Nybegynder
01. marts 2002 - 04:12 #28
Vi lader bilen stå !!

-men i lige måde. Vi tales ved, på dette facinerende spørgsmål, snarligt
Avatar billede barklund Nybegynder
01. marts 2002 - 11:20 #29
Jeg synes nu, at det ser perfekt ud, men jeg skriver trods alt også de fleste af mine scripts uden at have flash ved hånden...

Kan du uploade et swf-resultat? (helst i en html-side, da min linux->netscape6 ikke kan åbne swf uden html)...

/Barklund
Avatar billede baitianlong Nybegynder
01. marts 2002 - 23:26 #30
Barklund>> Jeg har uploadet det seneste script.

Se hvordan de kører !!!!

http://www.legende.dk/star.html

Håber du/i kan fikse det !!
Avatar billede NanoQ Nybegynder
01. marts 2002 - 23:30 #31
hehe... det er jo nok ikke meningen... men en ret fed effekt ;)
Avatar billede barklund Nybegynder
02. marts 2002 - 00:36 #32
onClipEvent(load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = maxdepth;
        while(i--)
            this.duplicateMovieClip("star_" add i,i);
        popInterval = 5;
        _root.width = _root.height = 400;
    } else {
        var h = _root.height;
        var w = _root.widht;
        _x = w * Math.random();
        _y = h * Math.random();
        var angle = Math.atan2(_y-h/2,_x-w/2);
        var len = Math.sqrt(w*w+h*h)/2;
        var end_x = w/2+len*Math.cos(angle);
        var end_y = h/2+len*Math.sin(angle);
        var number_frames = 40;
        step_x = (end_x-_x)/number_frames;
        step_y = (end_y-_y)/number_frames;
    }
}
onClipEvent(enterFrame) {
    if (_name eq "star") {
        i=(i%MAXDEPTH)+1;
        this.duplicateMovieClip("star_" add i,i);
    } else {
        _x += step_x;
        _y += step_y;
        //_xscale += 10;
        //_yscale += 10;
    }
}

Bedre? (bemærk "w/2" og "h/2" i "end_x" hhv. "end_y")
Avatar billede baitianlong Nybegynder
02. marts 2002 - 00:42 #33
Nu bevæger de sig kun langs y_aksen.

Se her:

http://www.legende.dk/star.html
Avatar billede barklund Nybegynder
02. marts 2002 - 00:49 #34
Jaa... For jeg kan ikke stave til width i definitionen af w... Ret det lige selv :o)
Avatar billede barklund Nybegynder
02. marts 2002 - 01:23 #35
Gik du i seng? Eller blev du bare borte?
Avatar billede baitianlong Nybegynder
02. marts 2002 - 01:35 #36
Jeg har lige uploaded den nye. Jeg synes det virkelig nærmer sig det perfekte resultat.
Men den ser godt nok syret ud når den starter op !!! Prøv lige at se !!!
...Og jeg synes stjernerne skal komme mere centreret "fra midten" (Det er som om, den har sat centrum et tilfældigt sted !!)
+ der må gerne være flere stjerner
Avatar billede baitianlong Nybegynder
02. marts 2002 - 01:36 #37
Jeg vil gerne kunne justere antallet af stjerner og hastigheden (udan at ændre framerate, naturligvis)

Håber ikke jer er for krævende (o;
Avatar billede barklund Nybegynder
02. marts 2002 - 01:50 #38
onClipEvent(load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = 10;
        while(i--)
            this.duplicateMovieClip("star_" add i,i);
        popInterval = 5;
        _root.width = _root.height = 400;
    } else {
        var h = _root.height;
        var w = _root.widht;
        _x = w * Math.random();
        _y = h * Math.random();
        var angle = Math.atan2(_y-h/2,_x-w/2);
        var len = Math.sqrt(w*w+h*h)/2;
        var end_x = w/2+len*Math.cos(angle);
        var end_y = h/2+len*Math.sin(angle);
        var number_frames = 40;
        step_x = (end_x-_x)/number_frames;
        step_y = (end_y-_y)/number_frames;
    }
}
onClipEvent(enterFrame) {
    if (_name eq "star") {
        i=(i%maxdepth)+1;
        this.duplicateMovieClip("star_" add i,i);
    } else {
        _x += step_x;
        _y += step_y;
        //_xscale += 10;
        //_yscale += 10;
    }
}

Maxdepth ændrer antal stjerner i alt... number_frames ændrer hastighed...

Centrum er sat ud fra parametrene _root.width og _root.height som begge er sat til 400 - har du andre værdier, så skal de selvfølgelig indsættes...
Avatar billede baitianlong Nybegynder
02. marts 2002 - 02:32 #39
Men du må give mig ret i at på den side, jeg har uploadet (og der har jeg naturligvis skiftet width og height ud), kommer de ikke fra centrum, men nærmest 1/4 fra højre. (den er 760x400)
Ellers er det rigtig godt !!

Hvorfor starter den på sådan en syret måde. Kan man gøre noget ved det (F.eks at den kun starter med 1 stjerne, og så lægger til antallet til værdien er maxdepth.) Så man undgår at den som udgangspunkt tegner de 200 stjerner og derefter vender "vrangen" ud på dem, som den gør nu !?
Avatar billede barklund Nybegynder
02. marts 2002 - 02:58 #40
Indsæt det sidst skrevne script - det starter med kun 10 stjerner... altså i definitionen af i...

Mht midtpunktet så ser det af mærkelige årsager ud som om, at den vælger din første star's placering som midtpunkt.. Flyt denne ind i midten...
Avatar billede baitianlong Nybegynder
02. marts 2002 - 03:11 #41
Kan du ikke lige ændre det en lille smule mere !!

1) Flyveeffekten mangler, da stjernerne ikke vokser !!

2) De skal dukke op nærmere centrum alle sammen. Det duer ikke at de dukker op over hele skærmen. kan du lave det så de dukker op inden for et interval a'la:  w/2-20+(1+random(40))
Avatar billede baitianlong Nybegynder
02. marts 2002 - 03:12 #42
MEN du havde ret i den med mit mc skulle flyttes ind i midten (o; Nu er der blot de to andre småting
Avatar billede baitianlong Nybegynder
02. marts 2002 - 04:43 #43
Der er noget andet, der er lidt underligt... Den lægger stjernerne ovenpå alle andre layers, selv om det ligger nederst !!!!!!
Avatar billede barklund Nybegynder
02. marts 2002 - 10:53 #44
Ja... Stjernene ligger i level 1-200... Jeg kan lave det om...
Avatar billede barklund Nybegynder
02. marts 2002 - 10:58 #45
onClipEvent (load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 200;
        i = 10;
        while (i--) {
            this.duplicateMovieClip("star_" add i, -i);
        }
        popInterval = 5;
        _root.width = 300;
        _root.height = 500;
    } else {
        var h = _root.height;
        var w = _root.width;
        _x = w/2+200*Math.random()-100;
        _y = h/2+200*Math.random()-100;
        var angle = Math.atan2(_y-h/2, _x-w/2);
        var len = 10;
        step_x = len*Math.cos(angle);
        step_y = len*Math.sin(angle);
    }
}
onClipEvent (enterFrame) {
    if (_name eq "star") {
        i = (i%maxdepth)+1;
        this.duplicateMovieClip("star_" add i, -i);
    } else {
        _x += step_x;
        _y += step_y;
        _xscale += 5;
        _yscale += 5;
    }
}
Avatar billede baitianlong Nybegynder
02. marts 2002 - 16:45 #46
Hej Barklund. Nu flyver de perfekt, men der er stadig lige det med layers'ne.
http://www.legende.dk/star.html
Avatar billede pixelpaw Nybegynder
02. marts 2002 - 16:55 #47
den ligner faktisk lidt den jeg lavede i starten, bare at den kører hurtigere...
Avatar billede barklund Nybegynder
02. marts 2002 - 20:08 #48
Du har vist ikke lagt mærke til det lille "-" i de to duplicateMovieClip - de sender til negativt level, hvilket er endnu en udokumenteret feature i Flash... Bruger du denne, skal du være opmærksom på problemer med level-888, hvilket nogle gange giver problemer... Jeg har dog ikke oplevet dem...
Avatar billede baitianlong Nybegynder
02. marts 2002 - 20:58 #49
Pixelpaw>> Din flash var meget fin, og kørte næsten som jeg ville have det. Jeg kunne godt lide den. Men som jeg nævnte tidligere var jeg ikke interesseret i en tweening løsning. Jeg vil gerne scripte det (se mit spørgsmål, og mine kommentarer). Den har dog samme "fejl" som Barklunds, At den lægger sig ovenpå alle andre layers.

Barklund>> Du har vundet (igen), men hvad gør jeg for at få layer-problemet løst. Jeg havde tænkt på at putte star ind i et mc og dette i et layer, i stedet for bare at have star+script i et layer i hovedfilmen .. -vil det virke ??
Som dit script står nu, er der stadig samme problem... stjernerne liger øverst !!

Det jeg godt kan lide ved den reviderede barklund-løsning, er at den nu sender stjernerne ud fre midtens 100x100 pixels, fremfor pixelpaws script, der altid starter præcis i centrum af flashen (eller hvor man nu har sat tweening-mc'et
Avatar billede barklund Nybegynder
02. marts 2002 - 20:59 #50
også med negative levels?
Avatar billede barklund Nybegynder
02. marts 2002 - 21:02 #51
Og nej, om det er i et mc eller ej er underordnet... Den sender jo til levels
Avatar billede baitianlong Nybegynder
02. marts 2002 - 21:18 #52
Jamen Barklund. Et eller andet er galt for som du kan se på uploadet, (hvor jeg har brugt nøjagtig dit ovenstående script, kun ændret i root.width + height) kører stjernerne hen over den blå firkant !
Avatar billede barklund Nybegynder
02. marts 2002 - 21:21 #53
Lav resten af din film i en selvstændig swf og load den ind i level1000 - så har du ingen problemer... :o)
Avatar billede baitianlong Nybegynder
02. marts 2002 - 21:26 #54
er det ikke nok med level 1 ??? ellers godt tænkt. Du får points.

Se her:
Barklund>> http://www.legende.dk/star.html  (Actionscript)
pixelpaw>> http://www.legende.dk/star2.html (tweening)

Tak for den lange og komplicerede hjælp, Barklund. Besvar lige level 1 ?? Vi ses næste gang jeg har script-opgaver !!
Avatar billede baitianlong Nybegynder
02. marts 2002 - 21:27 #55
Og hov.. Husk at bruge svar, Barklund. Du kommenterer altid ((o;
Avatar billede barklund Nybegynder
02. marts 2002 - 21:31 #56
Nej.... Du skal loade dit interface til et level større end maxdepth, der her er 200... 201 er ok...
Avatar billede baitianlong Nybegynder
02. marts 2002 - 21:40 #57
hvad er der galt her ?
onClipEvent (load) {
    if (_name eq "star") {
        _visible = 0;
        maxdepth = 400;
        i = 10;
        while (i--) {
            this.duplicateMovieClip("star_" add i, -i);
        }
        popInterval = 5;
        _root.width = 760;
        _root.height = 400;
    } else {
        var h = _root.height;
        var w = _root.width;
        _x = w/2+200*Math.random()-100;
        _y = h/2+200*Math.random()-100;
        var angle = Math.atan2(_y-h/2, _x-w/2);
        var len = 5;
        step_x = len*Math.cos(angle);
        step_y = len*Math.sin(angle);
    }
    loadMovieNum ("star_ovenpaa.swf", 1000);
}

Kan jeg ikke loade den her ?
Avatar billede baitianlong Nybegynder
02. marts 2002 - 21:41 #58
Skal jeg lave det som frameaction, eller hvad ?
Avatar billede barklund Nybegynder
02. marts 2002 - 23:42 #59
Det er intet galt og den gør garanteret hvad du beder den om... Hvergang en ny stjerne skal opstå, så kører den onClipEvent(load)... Alt afhængig af, om dens navn er "star" eller ej, så kører den if-blokken eller else-blokken... Da dit udtryk står udenfor disse blokke, køres det for hver eneste stjerne der loades, hvilket sker for hver eneste EnterFrame - det er lidt dumt :o)

Læg den op i if-blokken...
Avatar billede baitianlong Nybegynder
03. marts 2002 - 02:13 #60
Jeg synes det er sært at den ikke gør det hvis jeg putter det ind efter onClipEvent(load), men før if !!!!!, men du har ret i at det virker i if-blokken, og også som frameaction i frame 1.... Jeg kan nævne at det er ok at loade den i level 1 (det behøver ikke være et højere tal), så er den glad.
Tak for hjælpen
Avatar billede baitianlong Nybegynder
04. marts 2002 - 18:33 #61
Hej Barklund. i scriptet er du ved at lave PopInterval, men du bruger det aldrig. Kan du tilføje den linie der gør det muligt for mig at justere hvor tit, der skal komme en ny stjerne,

...for jeg har måttet reducere antallet af stjerner til 30, ellers slides grafikkortet op, når der laves andre tweenings m.v... -Og med kun 30 stjerner, flyver de ikke særligt langt, da der for ofte kommer en ny.
Avatar billede baitianlong Nybegynder
04. marts 2002 - 18:50 #62
Hæ hæ. Jeg har fundet ud af det !! (Hvor er jeg bare dygtig)

onClipEvent (enterFrame) {
pause=random(popInterval);
if (_name eq "star") {
        i = (i%maxdepth)+1;
    } else {
        _x += step_x;
        _y += step_y;
        _xscale += 3; //voksefaktor
        _yscale += 3;
    }
if (pause==1 && _name eq "star"){       
this.duplicateMovieClip("star_" add i, -i);
}
}

Er det ikke fantastisk ??
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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