Hejsa. Ja, kan Flash være glemsom - og lave periodiske fejl?
Baggrunden: Min flash-projektor (exe) loader en ekstern fil med 52 forskellige variabler, der er markeret enten true eller false. Herefter loades en tilsvarende ekstern fil med endnu 52 variabler. Bagefter vendes tilbage til flash-projektoren, eller hovedfilen, for at vise resultatet og udskrive det. Resultatet vises grafisk med nogle prikker enten sorte eller hvide, efter henholdsvis true eller false variabel:
Det er den jeg bruger til det movieclip der vises på skærmen. Bagved ligger mit print-MC. Her har jeg i stedet indledt med
onClipEvent (load) { ...osv
Så langt så godt. Det fungerer faktisk også godt. Med ca. hver femte til tiende gang så virker det ikke i det MC der udskrives. Det vil sige, at resultatet af det første loadede MC ikke vises i printet, men at det andet loadede MC vises fint. Begge vises korrekt i skærmversionen.
Altså: Variablerne vises korrekt på skræmen men det går galt ca. hver tiende gang når det printes ud. Udgangspunktet er ellers det samme i mine actions både for skærm-MC´et og i print-MC´et.
Kan der være periodiske udfald i et ellers helt systematisk flash-projekt?! Eller kan jeg nåt toppen af, hvad Flash kan klare uden udfald?
Jeg synes sgu det er mærkeligt! :-)
Hvis det er blevet alt får kryptisk her, får jeg lige lavet en version, jeg kan lægge på nettet.
For det første, det er da fuldstændigt tåbeligt at have så lang en kode for at sætte 52 movieclips til synlige eller ej udfra 52 varaibler - det kan jo gøres så kort som:
var i; for (i = 1; i <= 52; i++) { mit_mc["aprik"+i]._visible = eval("prik"+i); }
Men jeg tror problemet ligger i, at du ikke venter på, at dine variabler er loaded... Som oftest når dine variabler at blive loaded, men ikke altid - og du venter jo ikke for at være sikker.
Vis os dit loading script - hvordan loader du variablerne lige nu? Eller rettere, hvilke to filer henter du fra - jeg er sikker på, at det kan gøres MEGET nemmere... :)
Og forresten så er du ikke engang i nærheden af hvad flash playeren kan klare uden "udfald" - den kan så meget mere, hvis man bare gør tingene ordentligt :)
Hej igen. Jeg kunne godt bruge hjælp til lige at forstå, hvordan jeg venter på, at variablerne loades. Skal jeg i stedet oprette et nyt spørgsmål?
Alternativt er der måske en haj, der udenom pointsystemet tør give mit et tilbud på at hjælpe mig over mine uvidenhedsvanskelligheder, så jeg kan få afsluttet projektet...
Okay. Jeg fandt denne, men jeg synes alle eksempler gik på .txt´er eller noget .php. Fungerer det, når jeg som herunder har indsat prog0.swf?
stop(); // stands afspilleren varHolder = new LoadVars(); // Lav et loadvars object varHolder.load("prog0.swf"); // Hent variablerne fra var.php ind i varHolder varHolder.onLoad = function() { // Når variablerne er loaded udfør function som du selv definerer gotoAndPlay("vaelger"); };
Nedenstående får jeg ikke til at virker:
var i; for (i = 1; i <= 52; i++) { prog0printH["aprik"+i]._visible = eval("prik"+i)...; }
LoadVars er til at loade variabler - loader du ikke nogle variabler, som du skal gøre noget ud fra? Eller loader du en swf, som indeholder de variabler, du skal gøre noget ud fra?
Jeg har en ekstern swf-fil, hvori jeg opretter nogle variabler, herefter markerer dem som true eller false enkeltvis henad timelinen. Kort fortalt for at en bruger fortæller om han ser nogle markeringer. Herefter lader jeg den eksterne swf gå til en gennemsigtig scene, hvorefter brugeren går videre til printdelen, hvor variablerne i den eksterne swf danner baggrund for en grafisk fremstilling som udskrives.
Denne udskrift er nogle gange uden markeringer, altså får den ikke fat på den første serie af variabler. I hvert fald ikke første gang. Printer jeg endnu en gang, fungerer det.
Det lyder rimeligt nok, at jeg skal vente på at den finder variablerne, men de er der jo sådan set hele tiden?
Eller hvad ved jeg. Jeg har langt henad vejen brugt mit projekt her til at lære action script at kende. Med de unoder man får med ved at lære sig selv tingene... :-)
Du skrev engang herinde, at du ikke var interesseret i freelance-arbejde. Er det stadig din holdning?
Ikke så meget u-interesseret som mangel på tid og ressourcer... Men ja, jeg laver ikke freelance - har rigeligt at lave i forvejen :)
Hvis variabler er defineret og brugt før de danner baggrund for en udskrift, så er problemet ikke loading.
Forstår jeg ret, at du undervejs i afspilning af en film definerer og sætter de 52 variabler? Og til sidst skal disse 52 variabler bruges til at sætte synlighed for 52 prikker? Disse prikker findes i et movieclip, som udskrives?
Er det så ikke noget med i sidste frame at have:
var i; for (i = 1; i <= 52; i++) { some_mc["aprik"+i]._visible = this["prik"+i]; } print(some_mc);
Hvis dine prikker altså ligger direkte som movieclips i dette movieclip's undermovieclip "some_mc". Det ville jeg nok sætte det op til :)
de bruges ikke før, men den eksterne swf har jo været loadet i ret lang tid. Først vises en serie prikker for højre øje, dernæst en tilsvarende for venstre. Det er den første serie der vises først i print-delen i hoved-projectoren, og det er også den der er problemet.
Øhm, det gør det vist ikke nemmere, at jeg er en spade til matamatisk logik. :-) • Skal jeg sætte din action som en enterFrame eller som en frame action?
Jeg har alle prikkerne liggende i et MC som jeg har lagt nedenstående actions på. gentaget 52 gange. Det var så her du fik et billigt grin tidligere.. he he
Jeg må nok indrømme, at jeg ikke helt fatter, hvad du vil. Jeg har ikke lige overskud pt. til at kigge på dine filer, så jeg kan ikke umiddelbart hjælpe dig.
Hm, er nok heller ikke så klart. Jeg har en hvid prik liggende og en sort prik ovenover som hedder aprik[tal]. Hvis variablen fra den loadede SWF i level11 er true, så skal den sorte prik ikke vises. Hvis variablen er false, skal den sorte prik vises...
Okay. Jeg kan prøve at forklare det, så kan du jo gi et kig når du får et øjeblik:
En bruger vælger i en flash-projector/exe et af seks programmer til undersøgelse af øjet. Vælges program 1 loades en swf bestående af en serie prikker der vises kort, hvorefter brugeren markerer med et klik, at prikken er set. Derved dannes i swfen 52 - 92 variabler afhængig af hvilket program der er valgt. Er prik nr 5 set, markeres variablen "prik5" som true.
Når testen er afsluttet stopper den loadede swf i en gennemsigtig scene. Herefter kører hovedprojectoren/Exe´en en generel præsentation hvorefter program 1´s venstre del af undersøgelsen vises. Den loades i et andet level og kører efter samme princip som testen for højre øje. Venstre test slutter ligeledes i en gennemsigtig scene hvorved der vendes tilbage til en printdel. Her vises udfra ovenstående clipEvent-action resultatet af de to tests i to forskellige MC og i to bagvedliggende MC´er der udskrives.
Har brugeren overset en prik i testen er variablen markeret som false (altså _level2.prik42 == false), så vises en sort prik ("aprik42", _visible, true) og omvendt. Det er det jeg har ville kode mig ud af med de mange gentagelser.
Fidusen er, at overses en prik skal dette sted gengives i udskriften. Og det virker som sagt - de fleste gange. Det er det, der giver mig lidt grå hår...
Krydser fingrer for, at du får tid. Jeg blir hevet i ørerne for at få løst sagerne... :-)
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.