Avatar billede blim Nybegynder
16. juli 2003 - 18:02 Der er 10 kommentarer og
2 løsninger

Lave en instance

Hey...
ok kort og godt, lad os sige jeg har et billede i min cast... hver gang man klikker på en button skal den lave en kopi af det billede et tilfældigt sted på skærmen!

Jeg har ingen problemer med random placering og billede, kun hvordan man laver en kopi af billedet! :)

håber nogen ka hjælpe
Avatar billede kanding Nybegynder
23. juli 2003 - 23:50 #1
Først skal du finde ud af hvilke sprite kanaler der er tomme:
Lav et loop og spørg på sprite(x).type. Hvis den er 0 så er den tom. Gem dem i en liste

På din knap skriver du så:

on mouseUp me
emptySprite = gSpriteList[1]
gSpriteList.deleteAt(1)
sprite(emptySprite ).puppet = true
sprite(emptySprite ).ink = 36
sprite(emptySprite ).loc = point(random(300), random(300))
end
Avatar billede lingodingo Nybegynder
26. juli 2003 - 23:40 #2
Prøv dette
--tjek om sprit er tom:
i = 1
Repeat while sprite(i) <> 0
i = i + 1
x = i
end repeat
----- hvis det skal duplikeres gør du sådan
myNewImage = member("ditBitmap").image.duplicate()
sprite(x).member = myNewImage

-----hvis det ikke skal buplikeres er det:
sprite(x).member = member("ditBitmap")
Avatar billede lingodingo Nybegynder
26. juli 2003 - 23:56 #3
en mangel, repeat loopen er:
Repeat while sprite(i).member <> 0
J
Avatar billede kanding Nybegynder
27. juli 2003 - 10:53 #4
der er et problem med dit loop. Så snart sprite ikke er tom hoppes der ud af loopet. Det er bedre med:

repaet with s = 1 to 1000
if sprite(s).type = 0 then
gGlobalSpriteList.add(s)
end if
end repeat

så får du alle tomme sprites, også dem der er ind imellem din score opbygning.

Desuden bliver du nød til at puppet en sprite før du kan sætte et member på det samt ink'en er som standard copy hvis du ikke sætter den og til sidst så er den på loc 0,0 som udgangspunkt
Avatar billede blim Nybegynder
27. juli 2003 - 12:02 #5
det er ik fordi jeg har glemt jer... jeg har bare ik haft tid til at prøve det endnu pga. det andet spørgsmål jeg havde herinde... men gør det så snart jeg kan :)

Tak til jer begge på forhånd
Avatar billede blim Nybegynder
27. juli 2003 - 13:29 #6
Lingodingo dit forslag virker kun hvis jeg har en MEMBER jeg skal have duplikeret... i mit tilfælde er det et MEMBER som jeg vil have flere forskellige steder på mit stage, og dermed i min SCORE som forskellige sprites.

Men Kanding når jeg så har fundet hvilke sprites der er tomme... hvad gør jeg så for at kopiere min sprite til et af de tomme?? Det var det som jeg ville vide fra starten :)
Avatar billede kanding Nybegynder
28. juli 2003 - 00:11 #7
se ovenover:

on mouseUp me
emptySprite = gSpriteList[1]
gSpriteList.deleteAt(1)
sprite(emptySprite ).puppet = true
sprite(emptySprite ).ink = 36
sprite(emptySprite ).loc = point(random(300), random(300))
end
Avatar billede lingodingo Nybegynder
28. juli 2003 - 01:32 #8
Tak skal du ha’ Kanding, jeg glemte puppet sprite og min loop... det var vist lørdag aften ;+)


Hvis jeg forstår dig ret Blim, har du et bitmap i en sprite du vil kopiere til en tom sprite, så du har to eller flere af samme bitmap på scenen?

---Denne loop er prøvet og det den gør er at finde den første tomme sprite.

i  = 1
Repeat while sprite(i).member <> member(0)
i = i + 1
xx = i --- når den hopper ud af loopen er xx en tom sprite mummer
end repeat

---Puppet sprite så du kan kontrollere din sprite med Lingo
sprite(xx).puppet = true

--- Hvis du kender den sprite du vil kopiere:
sprite(xx).member = sprite("ditBitmap").member


---Du kan også hente dit bitmap direkte fra din carst Lib:

sprite(xx).member = member(“bitmapNavn”, “castLibNavn”)

---Her fra sætter du dine propertyes som blend, loc ect.

Sprite (xx).loc = point(100, 100)
sprite(xx).blend  =  30
Avatar billede kanding Nybegynder
28. juli 2003 - 08:46 #9
blend er ligemeget, det er ink du skal sætte

Desuden er det mere optimalt at køre et repeat loop i starten af filmen der indsamler info om sprites fremfor hver gang du skal finde den næste. Hvis det er tilfældet at der slettes sprites, så skal den sprite kanal bare tilføjes listen igen
Avatar billede lingodingo Nybegynder
28. juli 2003 - 11:16 #10
kommentar til Kanding:
Jeg må sige at jeg prøver at undgå for mange lister/globals, og kan jeg update min aktion real-time ved fx. en simpel loop på en knap eller/og et  mother/child-Script med properties er det den metode jeg vil vælge, fordi der så ikke er så mange globals at holde styr på og jeg kan strukturere mit data flow mere nøjagtigt.
Avatar billede blim Nybegynder
28. juli 2003 - 11:22 #11
wow... jeg må sige at med denne her holder jeg faktisk med LingoDingo... ikke fordi dit forslag var dårligere John, men hans passer faktisk bedre i mit script :) ... tak til jer begge to.
Avatar billede kanding Nybegynder
28. juli 2003 - 12:47 #12
Jamen der er også mange måder at løse et problem på. Jeg bruger selv ikke mange globale variabler, men opretter managers der varetager diverse ting og sager. Her er det så at jeg hellere vil bruge et par milliseconds i starten til at indhente oplysninger i stedet for at gøre det hele tiden. LingoDingos loop vil blive længere for hver gang så teoretisk set, hvis der var en million sprite kanaler ville applikationen gå i stå på et tidspunkt.Ja ja, jeg ved det, jeg har bare gjort det til en vane at tage højde for disse ting, da det ikke tager mere tid. :-)I dit tilfælde blim, er det jo helt fint.

Hvis det var en større applikation ville mange af sådanne løsninger indvirke på performance, især på langsommere maskiner.

Nåh spørgsmålet er lukket nu og vi er alle glade ;-)
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