Avatar billede bonderosen Nybegynder
16. september 2003 - 11:47 Der er 21 kommentarer og
1 løsning

overførsel af et variabelt tal imellem to swf:

"Begin.swf" indeholder 2 andre swf'er:

I "first.swf" står:
buttonInstance.onRelease = function() {
    outgoing_lc = new LocalConnection();
    outgoing_lc.send("lc_name", "methodToExecute", userMessage.text);
    delete outgoing_lc;
};
I "second.swf" står:
incoming_lc = new LocalConnection();
incoming_lc.methodToExecute = function (param) {
    sentMessage.text = param;
}
incoming_lc.connect("lc_name");

Ved "testMovie" fungerer det, men når det eksporteres som én html, virker det ikke?!
Avatar billede barklund Nybegynder
16. september 2003 - 11:57 #1
har du begge swf i samme swf eller to forskellige steder i samme html? For det er jo det sidstnævnte, der er formålet med localconnection
Avatar billede bonderosen Nybegynder
16. september 2003 - 12:16 #2
Jeg har begge swf i samme swf, er det derfor?
Avatar billede bonderosen Nybegynder
16. september 2003 - 12:22 #3
Hvad gør jeg så, hvis jeg vil ha' point overført fra den ene swf til den anden?
Avatar billede _k Nybegynder
16. september 2003 - 12:40 #4
Du kan bruge din _root (begin.swf) til at holde en variabel for dig.

Altså sætte en varibel i first.swf (_root.variabel = "hej"), og tilgå den fra second.swf (sendMessage.text = _root.variabel)
Avatar billede bonderosen Nybegynder
16. september 2003 - 13:06 #5
Det kan jeg da ikke få til at virke...
Det var faktisk derfor jeg var ude i localconnection.
Jeg kan simpelthen ikke få trukket den variable med på den anden måde.
Avatar billede _k Nybegynder
16. september 2003 - 13:32 #6
loader du begge swf'er ind i begin.swf samtidig? Loader du ind i levels eller mc'er?

Ovenstående metode plejer nu at være ret straight forward. Prøv evt. at lave 3 testflashfiler.

1: begin.swf - skal kun indeholde det mc hvor du loder dine 2 andre swf'er ind + en knap eller 2 med koden til at hente dem.
2: 1.swf skal kun indeholde koden: _root.testVar = "Howdy - hul igennem";
3: 2.swf skal kun indeholde en knap med koden: trace(_root.testVar)
Avatar billede bonderosen Nybegynder
16. september 2003 - 13:51 #7
Nej ikke samtideig.
Det er et spil, hvor point fra level et skal overføres til level to o.s.v.
-Og jeg loader i levels.
Hvis jeg iøvrigt gør som du skriver, siger den output undefined, når jeg trykker på knappen "trace(_root.testVar)"
Jeg fatter hat!
Avatar billede _k Nybegynder
16. september 2003 - 14:23 #8
ok - at du loader ind i levels er et problem! Jeg vil anbefale dig i stedet at loade ind i et mc (som gerne må fylde hele din scene), så får du nemlig mulighed for at dele variable mellem dine levels.

Den dårlige nyhed er bare, at dine levels så ikke virker, hvis du bruger _root i actionscriptingen af dem. Dog ikke et problem der er større, end at du bare skal ind og ændre dine stier, så du undlader _root.....
Avatar billede mekawi Nybegynder
16. september 2003 - 15:10 #9
Det er også smartest at bruge relativ pathing i stedet for absolut: _root gi'r næsten altid problemer på langt sigt. Kald dine variabler i MC's istedet med _parent.mc...

Kim
Avatar billede barklund Nybegynder
16. september 2003 - 15:25 #10
Du kan da bare gemme dine variabler på _level0. Det har du jo hele tiden. Lav for eksempel i din begin.swf et objekt som:

_level0.saved_variables = new Object();

Og så kan du hele tiden læse og skrive dine variabler heri. Så har du styr på dem uden at få blandet dem sammen med de øvrige variabler, du måtte have i _level0.

_level0.saved_variables.i = 10;
trace(_level0.saved_variables.i);
Avatar billede _k Nybegynder
16. september 2003 - 21:34 #11
ok - der blev jeg klogere igen. Troede faktisk at man overskrev alt når man loadede ind i en level.... Men det virker jo faktisk!
Avatar billede barklund Nybegynder
16. september 2003 - 21:38 #12
Nope... Du overskriver kun "alt", når du loader noget i _level0 - ellers er _level0 og _global intakte.
Avatar billede bonderosen Nybegynder
17. september 2003 - 09:36 #13
Ups, det er lige langhåret nok for en nybegynder. Jeg kan simpelthen ikke få det til at virke. Er der nogen som har lyst til at skære det ud i pap?
Avatar billede barklund Nybegynder
17. september 2003 - 10:17 #14
Jeg vil vove at påstå, at localconnection er meget mere langhåret end et simpeæt objekt.

Du skriver i din hovedfilm begin.swf:

_level0.saved_variables = new Object();

Så når du skal gemme noget i first.swf skriver du:

_level0.saved_variables.NogetJegSkalGemme = "EnVærdiJegVilGemme";

Når du så skal hente værdien frem i second.swf
skriver du:

mitTekstFelt.text = _level0.saved_variables.NogetJegSkalGemme;

Eller had du nu skal bruge værdien til.

/Barklund
Avatar billede bonderosen Nybegynder
17. september 2003 - 12:24 #15
OK indrømmet. Jeg er blondine.
...så hvis I orker mere?

I "begin.swf" har jeg dette actionscript:
_level0.saved_variables=new Object();
stop();
samt to knapper:
1)
on (release) {
loadMovie("level1.swf",level01);
}
2)
on (release) {
loadMovie("level2.swf",level01);
}

I "level1.swf" har jeg en knap:
on (release) {
    _level0.saved_variables.i=10;
    loadMovie("begin.swf",level01);
}

I "level2.swf" har jeg et tekstfelt: mitTekstFelt
og et actionscript:
mitTekstFelt.text=_level0.saved_variables.i;

...og det virker ikke...?
Avatar billede barklund Nybegynder
17. september 2003 - 12:35 #16
Hvad er level01?
Avatar billede barklund Nybegynder
17. september 2003 - 12:35 #17
Loader du filmene ind istedet for hinanden eller ovenpå hinanden?
Avatar billede bonderosen Nybegynder
17. september 2003 - 12:40 #18
Oprindeligt havde jeg flere scener i begin.swf - level01, level02...men nu har jeg kun level01, så jeg loader vel nærmest oveni hinanden...øh?
Avatar billede barklund Nybegynder
17. september 2003 - 16:10 #19
Hvad er level01? Der er noget, der hedder _level1 og det loader man til via loadMovieNum("first.swf", 1); og så har du stadig din begin.swf omme bag ved.

Jeg tror du må tage det helt fra begyndelsen og sige, hvad det er du vil opnå, fremfor hvad du har gjort. Så kan vi foreslå, hvorledes du når dertil :)
Avatar billede bonderosen Nybegynder
18. september 2003 - 09:00 #20
God idé :-)
Jeg forsøger at lave et spil med 5 levels. Det er en slags puslespil, hvor brikkerne og pladen skiftes ud for hver level. Man lægger brikker på tid og får point efter hvor hurtig man er. Herefter har jeg en variabel, som indeholder de point, som jeg vil overføre til næste level. Jeg har lavet hvert level i hver sin swf (der gik kuk i variablerne, da jeg forsøgte med hver sin scene) Jeg har nu prøvet med loadMovieNum("first.swf", 1); Men ingenting vil åbenbart lykkes. Level01 er scene1 og jeg troede at man loadede ind i scene1 i begin.swf på den måde.
Avatar billede bonderosen Nybegynder
22. september 2003 - 14:22 #21
Det virker nu!!!
Avatar billede barklund Nybegynder
22. september 2003 - 17:17 #22
Jamen det var da herligt - selvom jeg aldrig fik svaret på det sidste :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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