19. juni 2001 - 14:17Der er
30 kommentarer og 1 løsning
handler not defined...
Vi har et spil med en masse ting, der bevæger sig nedad til venstre efter et script. Det fungerer fint. Problemet er, at alle huse, forhindringer, etc. som default er sat til ikke at bevæge sig og man kan så ændre deres \"flyt\" til true og de begynder at flytte sig. I \"on preparemovie\" sendes en besked til en sprite om at nu skal dette hus flytte sig (flyt sprite (random(6)+20). Den siger dog \"handler not defined!\", hvilket nok skyldes at den jo ikke kender flyt allerede i \"on preparemovie\", da den er skrevet i hus-scriptet. Min .dir ligger her: http://www.mediestud.dk/ADMIN/rune/projekt2/spil.zip Har en idé om at dette skulle være rimelig let.... meeen.. (o;
Det er ret imponerende hvis det virker, for prepareMovie bliver kaldt før en sprite er initialiseret, og man kan ikke forvent at scripts\'ne er \"klar\"... Det skal nok være on prepareFrame, eller on startMovie at du sender #fly til en given sprite.
Ask har ret! event rækkefølgen er som Ask har skrevet.
Derfor må vi enten bruge prepareFrame eller startMovie til at sende #fly beskeden.
Prepare frame har nogle fordele, men du skal være opmærksom på at prepareFrame bliver kaldt hver gang den kommer til framen og der bør derfor IKKE være en \"go to the frame\" i samme frame.
Udvid spritespan så din \"go to the frame\" kommer i en anden (efterfølgende) frame.
Fordelen ved prepareFrame er dog at spriten for tildelt den nye position inden framen optegnes- Derfor slipper vi for at se huset rykke sig fra sin default startposition.
Jeg har brugt en startMovie i stedet for og sendt zip filen til dig
takker.. jeg er allerede i fuld gang... men du har sikkert noget i filen jeg kan bruge... jeg har et lille problem med husene, når de alle har klaret turen hen over skærmen en gang... (vender tilbage inden 20.00). MVH Rune
så er min spil.zip fil opdateret. (se link ovf.) I skal være velkomne til at kigge på mit husproblem. Altså når husene har kørt én gang bliver de uregelmæssige...
det er netop dette overlap, der er problemet.. Jeg arbejder lige nu på at klare problemet via en liste. Spændende og se hvordan det går. Har du en smart idé er du naturligvis mere end velkommen til at komme med den! (o; Løses dette problem i aften (bliver siddende et par timer endnu), hvilket er mit mål, falder der ekstra 100 point af til hjælperen.
her er hvad jeg har bikset sammen indtil videre.. ikke testet... on beginsprite me set huslist to [1,2,3,4,5,6] .. on exitframe me... if the loch of sprite mig > 300 and not etflyt then if count(huslist) = 0 then set huslist to [1,2,3,4,5,6] end if set ranhus to random(count(huslist)) flyt sprite getpropat(ranhus) deleteat huslist,(ranhus) set etflyt to true .. Har ikke arbejdet ret meget med lists i Lingo.. (o;
Uden at have set filen er jeg overbevist om at det er synkroniseringen der kikser når et hus flyttes. I det der testes om locH er > 300, flyttes huset tilbage til en fast loch formoder jeg, problemet er bare at inden der bliver testet om vi er > 300 kan de have rykket sige et step mere og så får vi et overlap eller et mellemrum. Det vil sikkert også variere på en langsommere/hurtigere computer. Et par tanker: 1. Test nærmeste sprites loch og sæte den i forhold til den 2. sørg for at der huse der går lidt ud over stage og implementer at der checkkes for mellemrum.
Jeg ved ikke hvorlangt du er nået og om du har mod på noget nyt, men jeg ville lave det med imagelingo istedet. Det er lidt sent nu, men jeg vil prøve at få kigget på filen.
..and not etflyt.... når der sendes en besked til et random hus ændres etflyt til true og et givent hus kan derfor kun sende besked til ét andet hus om aktivering. Husene fortsætter ud af skærmen til >900-testen fanger den. -- hmmm.. mod på noget nyt. Målet er at husscriptet gerne skulle være færdig tidligt i morgen, da vi skal bruge idéen til forhindring osv. vi mangler stadig implementering af interaktion mellem cyklist og forhindringer... styrt, point, livmåler osv. Vi har nogle af pigerne til at kigge på programmeringen af det, men det skal jo sættes ind i en sammenhæng. Men er det smart og kan det klares på en time eller to kunne jeg da godt gå i krig med det...
fil opdateret... Jeg har blot tilføjet biler og brugt samme idé som til husene.. Nu skal jeg til at se hvordan bil- og husscripts skal se ud for at de fremkommer i tilfældig rækkefølge på skærmen.
glæder mig.... Her kan du se hvad vi har bikset sammen til huset... det virker ikke helt. --- on beginsprite me set mig to the spritenum of me set flyt to false set startloch to 12 --sættes til en negativ værdi set startlocv to 120 --sættes til en negativ værdi set the loch of sprite mig to startloch set the locv of sprite mig to startlocv set fart to 10 set retning to \"tilbage\" set etflyt to false set flytter to false set huslist to [#1 0,#2 0,#3 0,#4 0,#5 0,#6 0] --0=off 1=on set husudvaelg to true end
on flyt me if getpropat(huslist,mig-10) = 1 then --getPropAt([#a10, #b20],2) return end if set wolla to mig-10 huslist.(wolla) = 1 end
on exitframe me if getpropat(huslist,mig-10) = 0 then --hvis huset ikke skal bevæge sig return else set posv to the locv of sprite mig set posh to the loch of sprite mig set the loch of sprite mig to nyxplacering(posh,fart,retning) -- udregning af ny x-koordinat set the locv of sprite mig to nyyplacering(posv,fart,retning) -- udregning af ny y-koordinat if the loch of sprite mig > 1000 then -- hvis huset er kørt gennem skærmen og placeret udenfor huslist.(wolla) = 0 set etflyt to false set the loch of sprite mig to startloch set the locv of sprite mig to startlocv return end if if the loch of sprite mig > 300 and not etflyt then set ranhus to random(count(huslist)) if getpropat(huslist,ranhus) = 0 then flyt sprite ranhus+10 put huslist set etflyt to true end if end if end if end
on beginsprite me set mig to the spritenum of me set flythus to false set startloch to 12 --sættes til en negativ værdi set startlocv to 120 --sættes til en negativ værdi set the loch of sprite mig to startloch set the locv of sprite mig to startlocv set fart to 10 set retning to \"tilbage\" set etflyt to false set flytter to false addMigTilNyHus me end
on setFlytStatus me if sprite(mig).locH > 1000 then stopHus me else
if sprite(mig).loc = point(startLocH,startLocV) then AddMigTilNyHus end if
if (sprite(mig).locH > 300) and (etflyt = FALSE) and (flytHus = true) then startNytHus me end if
end if --bemærk at kun aktiverNytHus kan sætte flytHus = TRUE og at vi endnu ikke flytter nogle huse
end
on addMigTilNyHus me if getOne(NyHusList,mig) = 0 then add NyHusList, mig set etflyt = FALSE set flytHus =FALSE end
on startNytHus me set nyHusCount = NyHusList.count if nyHusCount <> 0 then set nytHus = NyHusList[random(nyHusCount)] sendSprite(nytHus,#flyt) deleteOne( NyHusList,nytHus) set etflyt = TRUE end if repeat with NyHusSprite in NyHusList sendSprite(nyHusSprite, #stopHus) end repeat
end
on stopHus me set flythus to False end
on flyt me set flythus to true end
on exitframe me if flytHus then set posv to the locv of sprite mig set posh to the loch of sprite mig set the loch of sprite mig to nyxplacering(posh,fart,retning) -- udregning af ny x-koordinat set the locv of sprite mig to nyyplacering(posv,fart,retning) -- udregning af ny y-koordinat else sprite(mig).loc = point(startLocH,startLocV) end if setFlytStatus me --opdater min status
som du ser er der tilføjet en global liste af \"nyeHuse\" altså den der må vælges fra når et random hus skal sættes igang
Der er også delt op på handlingen. Alle ændringer i FlytHus, etFlyt klares af
setFlytStatus EFTER husene er flyttet i exitFrame. Dette holder styr så timing ikke kikser igen.
beginSprite tilføjer husSprite til den globale NyHusList automatisk
startMovie og prepareMovie initialiserer resten
---------------------dit nye MovieScript--------------------
global NyHusList on preparemovie
global sentsprite
set NyHusList = [] set sentsprite to false -- koordinatsættene (xa,ya) og (xb,yb) er to punkter liggende på en linie -- parallel med vejenon preparemovie set xa to 426.0 --disse to punkter ligger på en linie parallel med vejen set ya to 2.0 set xb to 1690.0 set yb to 614.0 global vinkel set vinkel to atan(1.000*(yb-ya)/(xb-xa)) end
on startmovie NytHus end
on NytHus set nyHusCount = NyHusList.count if nyHusCount <> 0 then set nytHus = NyHusList[random(nyHusCount)] sendSprite(nytHus,#flyt) deleteOne( NyHusList,nytHus) end if
end
on NyXPlacering(glx,hast,retning) global vinkel if retning = \"tilbage\" then set grad to vinkel else if retning = \"ned\" then set grad to (vinkel+ pi/2) else if retning = \"frem\" then set grad to (vinkel+ pi) else if retning = \"op\" then set grad to (vinkel+pi*3/2) end if end if end if end if set nyx to ( glx + hast*cos(grad)) return nyx end
on NyYplacering(gly,hast,retning) global vinkel if retning = \"tilbage\" then set grad to vinkel else if retning = \"ned\" then set grad to (vinkel+ pi/2) else if retning = \"frem\" then set grad to (vinkel+ pi) else if retning = \"op\" then set grad to (vinkel+pi*3/2) end if end if end if end if set nyy to ( gly + hast * sin(grad)) return nyy end
on henttast global sidstetast res = sidstetast set sidstetast = 0 return res end
on keydown global sidstetast set sidstetast = the keycode end
---------------end MovieScript------------------
Eftersom vi begge to har redigeret videre på scriptsne kan det hurtigt blive noget rod hvis jeg blot antager at \"resten af dine movieScripts er som før\".
Kopier derfor hele scripts ind i dit moviescript cast
property mig property fart property retning property posV -- cyklens nuværende vertikale position property posH -- cyklens nuværende horisontale position property tast property grad -- grad er et udtryk for hvilken retning objektet skal flyttes i. -- 20 = lidt nedad til venstre -- 110 =
on beginsprite me set mig to the spritenum of me set fart to 15 end
on exitframe me set posV to the locv of sprite mig set posH to the loch of sprite mig set tast to henttast() moveCyklist me exit
end
on moveCyklist me case tast of 123: set retning = \"ned\" 124: set retning = \"op\" 125: set retning = \"tilbage\" 126: set retning = \"frem\" otherwise exit end case set the loch of sprite mig to nyxPlacering(posh,fart,retning) set the locv of sprite mig to nyyPlacering(posv,fart,retning) end
Tak for det! Pigerne spø\'r hvad du laver til hverdag? Godt spørgsmål tænkte jeg. Arbejder du med (Lingo)programmering eller er det en fritidsinteresse?
Jeg arbejder som konsulent og freelance udvikler i Director og Flash.
Lingo er helt klart også på toppen af listen når det gælder fritidsinteresser.
Jeg er vild med paragliding men har ikke længere tid til det efter jeg fik børn.
Fortæl mig lidt om jer selv når engang projektet er færdigt!
mvh Geo
Synes godt om
Ny brugerNybegynder
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.