18. marts 2006 - 16:09
Der er
13 kommentarer og 1 løsning
tegne en streg med actionscript
Hey kan man, med actionsript, få en streg til at tegne sig selv, eller er det noget med at animere?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
18. marts 2006 - 19:25
#1
Har stykket dette lille script sammen som du måske kan bruge: this.onLoad = function() { lineStartX = 100; lineStartY = 100; lineTargetX = 500; lineTargetY = 300; lineSteps = 30; lineStepX = (lineTargetX-lineStartX)/lineSteps; lineStepY = (lineTargetY-lineStartY)/lineSteps; i=0; this.lineStyle(1,000000,100); this.moveTo(lineStartX,lineStartY); } this.onEnterFrame = function() { if (i<lineSteps) { nextX = lineStartX+lineStepX*i; nextY = lineStartY+lineStepY*i; this.lineTo(nextX,nextY); i++; } } Du skal bare ændre på parameterne i starten, start og stop punkter osv, så tegner den selv derudaf. Stregen kan også placeres inde i et seperat MovieClip, så skal du bare referere til det i stedet for 'this'.
18. marts 2006 - 19:26
#2
glemte lige at nævne, at jeg placere koden i _root, men det behøver du jo ikke.
19. marts 2006 - 10:08
#3
Jeg kan ikke få den til at tegne. skriver koden i frame 1 på min stage. Magler jeg et eller andet?
19. marts 2006 - 11:00
#4
19. marts 2006 - 11:21
#5
jeg bruger flash 8. måske der er en forskel. Når jeg kopi-paster koden fra din fla over i en ny tom fla og tester den sker der ikke noget. Men den du har uploadet virker fint. Der må være noget jeg misser?
19. marts 2006 - 11:36
#6
kan man ændre hastigheden hvormed dentegner stregen. Hvis jeg eksempelvis sætter linesteps til 300 for at få en mere smooth animering, går der jo meget lang tid med at tegne stregen. Jeg kan jo bare sætte frameraten op for hele dokumentet, men hvis jeg loader denne swf ind i en andet swf med en lavere framerate, vil den så ikke ændres til den framerate der er i den swf den loades ind i? og dermed tegne stregen langsomt igen?
19. marts 2006 - 11:40
#7
Jeg sætter lige nogle flere point af til dig. den var lidt tynd med 15 point. Kunne du så lokkes til at vise mig hvordan jeg for stregen til at tegne en firkant?
19. marts 2006 - 20:15
#8
Jeg får lige installeret Flash 8 og undersøger hvordan det gøres der.
19. marts 2006 - 20:36
#9
Hvor hurtigt den tegner stregen er en kombination er lineSteps og fps i din movie. Jeg har installeret Flash 8, og det virker på nøjagtig samme måde. Kopierede bare koden over i første frame i en ny movie og testede det.
19. marts 2006 - 21:31
#10
Har siddet og leget lidt med at tegne en firkant, og lavede noget kode der kan tegne trekanter, firkanter og objekter med mange flere sider. coordsX = [100,200,200,100]; coordsY = [100,100,200,200]; steps = 10; c = 0; i = steps; this.lineStyle(1,000000,100); this.moveTo(coordsX[0],coordsY[0]); doDraw = true; xy = getNextSet(c++); this.onEnterFrame = function() { if (doDraw) { nextX = xy[0]+xy[2]*i; nextY = xy[1]+xy[3]*i; this.lineTo(nextX,nextY); i++; if (i == steps+1) { if (c == coordsX.length) doDraw = false; else xy = getNextSet(c++); // return = [x1,y1,stepX,stepY]; } } } function getNextSet(s) { // return = [x1,y1,stepX,stepY]; i = 0; x1 = coordsX[s]; y1 = coordsY[s]; if ((s+1)==coordsX.length) { x2 = coordsX[0]; y2 = coordsY[0]; } else { x2 = coordsX[s+1]; y2 = coordsY[s+1]; } stepX = (x2-x1)/steps; stepY = (y2-y1)/steps; return [x1,y1,stepX,stepY]; } Du skal bare rette coordsX, coordsY og steps, så finder funktionerne ud af resten.
20. marts 2006 - 08:46
#11
Velkommen tilbage, pixelpaw ;)
20. marts 2006 - 10:12
#12
tak tak :o) jeg ser du stadig hænger godt ved, godt at se
20. marts 2006 - 19:16
#13
Jeg kan ikke bede om mere. det virker perfekt :) smider du lige et svar så du kan nogle point.
20. marts 2006 - 21:28
#14
Glad for at kunne hjælpe :o)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.