Avatar billede thomaaaz Nybegynder
06. januar 2003 - 12:30 Der er 6 kommentarer og
1 løsning

streger fra punkt til punkt

jeg er igang med at lave et simpelt spil om at rejse i sydamerika.
I forbindelse med det skal man kunne vælge hovedstæderne i de forskellige lande for at flyve til et nyt land. Det kunne være lækkert om man kunne tegne en streg fra der hvor man befinder sig til destinationen ved at klikke på destinationen. Samtidig skulle man kunne måle stregens længde for at kunne bestemme prisen på billetten dertil.

Håber der er nogen der kan hjælpe mig til løsningen på dette forholdsvist simple og så alligevel for mig så svære problem!

Thomaaaz
Avatar billede sparkl Nybegynder
06. januar 2003 - 23:44 #1
Hej,

en måde dette kan opnås på er at bruge Directors line tool til at tegne en linie, som du så kan kontrollere start og slutpunktet på, ved at ændre på dimensionerne af den sprite som indeholder linien.

Det vil sige, at når du har start og slutpunktet for hvor linien skal gå, kan du ved at sætte spritens locV,locH,width og length ændre liniens dimensioner så den går fra startpunktet til slutpunktet.

Du kan også bruge lingo til at manipulere vertex'erne i et Director vectorshape castmember. Dette giver meget mere kontrol over linien, men kræver at du sætter dig ind i hvordan directors vectorshapes fungerer og hvordan man kan manipulere dem ved hjælp af lingo.

For at finde afstanden fra startpunktet til slutpunktet kan du ved at udregne den vertikale og horisontale afstand og derefter bruge Pythagoras sætning, finde frem til afstanden i luftlinie mellem startpunktet og slutpunktet.
Avatar billede thomaaaz Nybegynder
07. januar 2003 - 11:57 #2
Det kan jeg sådan set godt forstå - det var dette linetool jeg ledte efter i hjælp, men enten er det mig der ikke er knivskarp eller også skal stregen tegnes inden i en allerede defineret sprite...
Mit problem er at jeg kommer til at arbejde med flere sprites der vil være de pågældende punkter der skal tegnes streg imellem...
Vectorshape er jeg slet ikke inde i, og kommer det nok heller ikke i denne omgang, for det er i forbindelse med et projekt i skolen og der bliver nok ikke så meget tid til så omfattende projekter...
hvorom alting er skal linien kunne tegnes mellem to definerede punkter på stagen eller mellem to sprites.
så hvordan er det lige at linetool'et fungerer?
på forhånd tak
Thomaaaz
Avatar billede sparkl Nybegynder
08. januar 2003 - 15:46 #3
hej igen,

linetool'et kan ikke ret meget mere end at tegne en linie...

en tredie mulighed er at tegne alle mulige udfald på forhånd og så gemme og vise sprites alt efter hvad brugeren vælger....
Avatar billede thomaaaz Nybegynder
08. januar 2003 - 17:40 #4
halløjsa
Ja det var også en mulighed jeg havde i tankerne, men problemet er at det ville være lige omkring 72 forskellige linier... Dem har jeg ikke lyst til at tegne (kald mig doven...) - Men jeg ved stadig ikke hvad koden er for linetool'et...
en anden idé jeg tænkte på var om man kunne lade en anden sprite bevæge sig fra en sprite(a) til sprite(b)...
Er dette muligt og i så fald, har du en løsningsmulighed?

På forhånd tusind tak!
/Thomaaaz
Avatar billede sparkl Nybegynder
09. januar 2003 - 01:19 #5
Hej,

her er et eksempel hvordan du kan bruge spritedimensionerne til at styre din line tegnet med linetool'et.

Først skal du lave to linier med linetool'et.

Den første linie skal gå fra venstre og nedad mod højre. Placer denne linie i sprite channel 1.

Den anden linie skal gå fra højre og nedad mod venstre. Placer denne linie i sprite channel 2.

Her er noget kode som du kan smide ind i dit moviescript. Når du afspiller movien, skulle der nu gerne blive tegnet en linie hver anden gang du trykker på stagen, mellem det sted hvor du trykker første gang og det sted du trykker anden gang.

Global punkt1, punkt2

on startmovie
  punkt1 = "tom"
  punkt2 = "tom"
  sprite(1).rect = rect(-5,-5,-5,-5)
  sprite(2).rect = rect(-5,-5,-5,-5)
end

on mouseup
  if punkt1 = "tom" then
    punkt1 = the mouseloc
  else if punkt2 = "tom" then
    punkt2 = the mouseloc
  end if
 
  if punkt2 = "tom" then
    sprite(1).rect = rect(-5,-5,-5,-5)
    sprite(2).rect = rect(-5,-5,-5,-5)
  else if punkt1[1] < punkt2[1] and punkt1[2] < punkt2[2] or punkt1[1] > punkt2[1] and punkt1[2] > punkt2[2] then
    sprite(1).rect = rect(punkt1[1],punkt1[2],punkt2[1],punkt2[2])
    punkt1 = "tom"
    punkt2 = "tom"
  else
    sprite(2).rect = rect(punkt1[1],punkt1[2],punkt2[1],punkt2[2])
    punkt1 = "tom"
    punkt2 = "tom"
  end if
end
Avatar billede sparkl Nybegynder
09. januar 2003 - 01:25 #6
Ved godt det er lidt af en fusker måde.. ;) men det er simpelt, og det virker...
Avatar billede thomaaaz Nybegynder
09. januar 2003 - 10:58 #7
Kanon!!!
Det funker sgu og det der det jeg skal bruge (ellers prøver jeg at rette det lidt til - Ellers kommer der nok et spørgsmål eller to mere!
Tak for hjælpen!
/Thomaaaz
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
Kurser inden for grundlæggende programmering

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