Avatar billede maxikoll Nybegynder
15. januar 2002 - 12:27 Der er 17 kommentarer og
1 løsning

Smart måde at spare kode? Billede/Tekst

Hej, jeg skal lave sådan en slideshow CDRom, hvor jeg har en masse billeder med tekst til.

Er det muligt at lave sådan at den skifter en sprite ud med cast afhængigt af hvor man er. Man har en Next knap, klikker man på den vil den automatisk tage det næste billede og tekst, evt. ved at billederne samt teksten har et tal som filnavn? Eller? Jeg er ikke super til Lingo, er lang tid siden jeg har brugt det sidst :)

Men er der nogen med gode idéer vil jeg blive meget glad.
Avatar billede Himbear Nybegynder
15. januar 2002 - 14:13 #1
Du kan bruge det her:

global gcastNum
on mouseUp
  gcastNum = (sprite(1).memberNum + 1)
  sprite(1).memberNum = gcastNum
end

Det skal på din next knap, men så skal dine billeder bare ligge lige efter i hinanden i casten. Og du skal lige ændre sprite nr. hvis det ikke passer til din film!
Avatar billede kanding Nybegynder
15. januar 2002 - 14:31 #2
Det er jo et spørgsmål om man arrangere sin cast på en speciel måde eller om man laver et scripts som arrangerer dem.

den første er ummidelbar den letteste.

Læg dine billeder i en internal cast og kald den \"billeder\". I slot 1 lægges billed 1 og den til hørende tekst i 2 osv.

I et script på din next knap skal du så bare lave en:

property pBilled
property pMaxAntalBilleder

on beginSprite me
pBilled = 0
pMaxAntalBilleder = castLib(\"billeder\").member.count
end

on mouseUp me
if pBilled + 1 <= pMaxAntalBilleder then
pBilled = pBilled +1
sprite(me.spriteNum).member = member(pBilled , \"billeder\")
sprite(spriteSomHarTekstMember).member.text = member(pBilled+1 , \"billeder\").text
end if

kanding
Avatar billede maxikoll Nybegynder
15. januar 2002 - 16:32 #3
Årgh, jeg er totalt lost, har ikke brugt Director siden 6\'eren, og det var ikke det vilde programmering dengang.

kanding, jeg har lavet en ny internal cast der hedder billeder, deri ligger 3 billeder af navn 0001, 0002, 0003.

Så skal jeg på min scene have en sprite, den den skal skifte ud ik? Hvordan laver man den, trækker jeg bare et billede ned eller?
Avatar billede Himbear Nybegynder
15. januar 2002 - 17:02 #4
Ja du skal putte det første billede ned i en sprite, du kan bare trække den ud på stagen! Men du skal lige tjekke hvor den placerer sig i scoren.
Avatar billede kanding Nybegynder
15. januar 2002 - 18:17 #5
Det er lige meget hvad billederne hedder, det var det der var det smarte. Vi referere til placering i cast\'en.

Du trækker det første billed ned på en sprite og smider scriptet på next knappen.

Et par rettelser:
Da billedet på spriten er nr. 1, skal pBilled i beginSprite være =1

Du skal ikke referere til sprite(me.spriteNum), da det er knappen selv, men til det spritenr. som billedet er sat på.

pMaxAntalBilleder = the number of members of castLib \"Billeder\"

---------------------NYT SCRIPT-----------------
property pBilled
property pMaxAntalBilleder

on beginSprite me
pBilled = 1
pMaxAntalBilleder = the number of members of castLib \"Billeder\"
end

on mouseUp me
if pBilled + 1 <= pMaxAntalBilleder then
pBilled = pBilled +1
else
pBilled = 1
end if
sprite(spriteNrSomHarBilled).member = member(pBilled , \"billeder\")
sprite(spriteSomHarTekstMember).member.text = member(pBilled+1 , \"billeder\").text
end

----------------

Så skulle den være rigtig, dog har jeg ikke testet det. Husk at spriteNrSomHarBilled skal være nr. på sprite\'n som har billedet på sig

Avatar billede maxikoll Nybegynder
15. januar 2002 - 18:27 #6
Ok, så for at lave den sprite på scenen trækker jeg bare et billede ned? Eller skal jeg gøre det på en anden måde, lave et feldt eller sådan noget? Hvis man kan :)

den brokker sig over
sprite(spriteNrSomHarBilled).member = member(pBilled , \"billeder\")

men det vel fordi jeg ikke giver den det rigtige navn eller?

Den siger:
\"Variable used before asigning variable\"
Avatar billede Himbear Nybegynder
15. januar 2002 - 18:40 #7
Det er fordi at du skal definere hvad den sprite hedder!

feks. hvis dine billeder ligger i sprite 5, og dine billedetekst ligger i sprite 6, så skal det se sådan ud:

sprite(5).member = member(pBilled , \"billeder\")
sprite(6).member.text = member(pBilled+1 , \"billeder\").text
Avatar billede kanding Nybegynder
15. januar 2002 - 18:43 #8
du trækker bare billedet ud på stage. F.eks. i sprite channel 10.

spriteNrSomHarBilled er ikke en defineret variabel, men min måde at forklare at her skal du indsætte nr. på den sprite som har billedt

Nu når billedet ligger i channel 10 skal den lyde:
sprite(10).member = member(pBilled , \"billeder\")
Avatar billede maxikoll Nybegynder
15. januar 2002 - 18:49 #9
ok takker, en sidste ting håber jeg det er :)

Nu klager den ikke mere, jeg har billede i frame 10, men den skifter ikke ved next... i scriptet over 10 har jeg \"go the frame\". Gør den noget? Ellers drøner den derud af.
Avatar billede maxikoll Nybegynder
15. januar 2002 - 18:56 #10
Det du laver med

sprite(6).member.text = member(pBilled+1 , \"billeder\").text

er det til teksten? Ellers kan man vel bare lave det samme med tekst til billedet? Bare det har samme rækkefølge.
Avatar billede kanding Nybegynder
15. januar 2002 - 19:06 #11
Ja du kan lave det samme til teksten.

Har du smidt scriptet på NEXT knappen?

prøv i beginSprite at skrive: put pMaxAntalBilleder
og læs i message vinduet hvad der står, det kan jo være at den er void eller 0
og så vil den køre else evalueringen.

Det slår mig lige at scriptet vil sætte et tekst member på hver anden gang ;-)

Det er bedre hvis du ligger teksten i sit eget castlib og kald det \"tekst\", så kan du lave et script magen til det med billederne.
Fjern: sprite(spriteSomHarTekstMember).member.text = member(pBilled+1 , \"billeder\").text fra scriptet

Tjek evt. getPropertyDescriptionList for at kunne bruge det samme script til begge.
Avatar billede maxikoll Nybegynder
15. januar 2002 - 19:15 #12
k, det dutter :)

hvad skal jeg gøre for at gå den anden vej, en back knap, det vel bare at vende om på noget af det?

Er 60 point nok til dig? Du har snart hjulpet meget :)
Avatar billede kanding Nybegynder
15. januar 2002 - 19:36 #13
Ja du skal bare vende om på det et par steder:

on mouseUp me
if pBilled -1 > 1 then
pBilled = pBilled -1
else
pBilled = pMaxAntalBilleder
end if
sprite(spriteNrSomHarBilled).member = member(pBilled , \"billeder\")
end

Det tog jo lang tid fordi jeg ikke lige testede det af i director, så 60 er helt i orden.;-)
Det skal lige siges at der er en endnu smartere måde at lave det på, men det må blive en anden god gang.

Avatar billede kanding Nybegynder
15. januar 2002 - 19:50 #14
skal være: if pBilled -1 >= 1 then
Avatar billede maxikoll Nybegynder
15. januar 2002 - 20:09 #15
Kender du et link til hvordan man laver sin egen scroll, sådan så man selv kan lave sine scroll ikoner osv, har engang lavet det, men så lang tid siden :(

til tekstbox self.
Avatar billede maxikoll Nybegynder
15. januar 2002 - 20:16 #16
Gah, skifter man tilfældigt mellem knapperne er der nogen gange den ikke fatter første klik
Avatar billede kanding Nybegynder
15. januar 2002 - 20:24 #17
mht link, så er der masser af behaviors på www.mediamacros.com
evt. se også www.kanding.dk/linx

Det med skiftet mellem knapperne er fordi de hver har deres egen pBilleder, som jo er en leftover fra at vi kun skulle have den ene.

Lav pBilleder om til gBilleder og definer den i begge scripts som
global gBilleder istedet for
property pBilleder
Avatar billede maxikoll Nybegynder
15. januar 2002 - 20:29 #18
argh, du gud :)

TUSIND tak for hjælpen! :D
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