Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
I følge Colin Moock, har det været en bevidst beslutning fra Flash engineers\' side for at begrænse Flash playerens størrelse.
page 95 frit oversat \" actionScript\'s eval(); kun bruges til en lille brøkdel af det javaScript\'s eval() funktion kan klare. ActionScripts eval() funktion kan i bedste fald kun hente data\'en forbundet med sit \'argument\'.\"
Men bokel\'s eksempel viser dog at man i alle fald kan få en matematisk fortolker med myMathString = \"5-4^2\"; trace(Math.eval(myMathString)) ;// giver -3
earp>> Hvis det er noget i denne stil du vil have har bokel lavet et script du blot inkluderer for at udvide actionScript\'s muligheder.
Lingo - Det er jo super at vide!! I øvrigt er det ligeså rart for andre at vide at eval() kun er en løsning i nødstifælde! Af den gode grund at eval() kommandoen i ALLE scriptsprog (ASP/PHP/JSP/javaScript og sikkert flere) er for tung. Faktisk hellere have 10 linier kode end én eval() - Den tager Simpelthen for lang tid at udføre :))
Hvis det bare kunne gøres med ekstra kode, ja enig! Dog er der mange ting som ikke lader sig gøre uden at man har mulighed for at sammensætte kommandoer dynamisk da man umuligt kan tage højde for alle kombinations mulighederne via if sætninger
Lingo - Ingen tvivl om at den kan være hamrende nødvendig!
Det jeg mente var bl.a også at mange bruger eval() helt unødvendigt - Altså hvor ting kan omskrives til at køre hurtigere med en linie eller to. Du ved ligeså godt som jeg at ActionScript er semicompiled og derfor allerede tungt nok og derfor skal vi på alle måder undgå´at gøre tingene værre.. Dette er så i øvrigt gældendede i andre ikke \"semicompiled\" sprog. Eval() er en tung handling at udføre. Det bør for næsten alle midler undgåes.
Nej den kan ikke undgåes, men i en hel de tilfælde alligevel jo.
Den tunge del udføres således kun een gang udenfor lykken og opretter en meget hurtigere reference til en nested MC, og resulterer i at koden bliver afviklet hurtigere. mvh geo
Det er mere end muligt at kalde funktioner dynamisk!
Tricket er blot, at kommando og argumenter skal kaldes hver for sig... Jeg har ikke prøvet med den indbyggede gotoAndStop, men vil påstå, at det følgende virker:
Barklund>> Jeg er enig med dig at man kan opdele en funktion eller kommando på den måde du beskriveri din kommentar fra 30/12 2001 22:12:01 . Faktisk mener jeg at have forslået det samme eksempel til nikolajdu engang. Der er dog slet ikke tale om eksekvering af en dynamisk skreven action, kun opdeling af en predefineret funktion, hvilket man nemmere kan opnå ved at sende et argument på normal vis.
function myEvent(whichFrame) { gotoAndPlay(whichFrame); }
mht hvorfor
loaderMC = eval(\"_root.actionMC.loadbar\");
benyttes i stedet for
loaderMC = _root.actionMC.loadbar;
vil du opdage hvis du eksekverer et timed loop på ca 1000.
eval() er simpelt hen ikke blot hurtigere, men det hurtigste som følgende speedtest viser.
eval(\"obj.prop\") = 5;
======================= obj = {}; //Test1------------------------ t1Start = new Date().getTime() i = 10000 while(i--){ obj.prop = 5; } t1 = new Date().getTime() - t1Start; //Test2------------------------ t2Start = new Date().getTime() i = 10000 while(i--){ eval(\"obj.prop\") = 5; } t2 = new Date().getTime() - t2Start; //Test3------------------------ t3Start = new Date().getTime() i = 10000 while(i--){ this[\"obj\"][\"prop\"] = 5; } t3 = new Date().getTime() - t3Start; ======================= Result: t1: 486 t2: 385 t3: 544 =======================
> Der er dog slet ikke tale om eksekvering af en > dynamisk skreven action, kun opdeling af en > predefineret funktion, hvilket man nemmere kan > opnå ved at sende et argument på normal vis.
Det er da ikke helt tilfældet, da man netop dynamisk kan angive, hvilken funktion, man ønsker at kalde.
For at vende tilbage til det, som blev nævnt helt i starten, så kan man netop have en kø af funktioner, som skal udføres ved:
for (var i = 0; i < queue.length; i++) this[queue[i].fun](queue[i].arg);
Man kunne også tilføje en target-property, så man kunne fange funktioner på alle niveauer, og skal der bare køres stop(), så sætter man bare arg = null eller lader den være undefined.
Vi kan da godt kalde det for opdeling af en predefineret funktion, men man kan jo sådan set heller ikke kalde udefinerede funktioner - eller hvad?
Mht. eval():
Jeg var ikke klar over (og kan slet ikke forstå), at eval()-versionen kører hurtigere, men må blot acceptere det...
Da jeg kom hjem i går kiggede jeg mine seneste mange projekter igennem og konstaterede, at jeg overhovedet ikke bruger eval() længere. Jeg tror heller ikke, at du kan komme med et eksempel på brug af eval(), som ikke kan laves med de rimeligt smarte []-access-ting...
At det så åbenbart kan være 0,1 sekund hurtigere ved loop på 10000, kan måske gøre, at jeg vil overveje brug af eval() ved meget tunge beregninger...
Men Flash er jo ikke lavet til tunge beregninger og store, grumme algoritmer, så det vil jeg nok gemme til Java eller noget...
Og så kunne man faktisk godt lave en feval()-funktion, der opdelte kaldet i det nødvendigt antal stykker, fandt det rigtige target og kørte den rigtige funktion med det rigtige argument...
Men da er en større opgave, da men kan skrive noget som:
I lingo bruger vi fks \"do\" kommandoen for at eksekvere en tekst streng. For at se forskellen behøver man dog ikke kigge længere end på javaScripts eval() og actionScripts modpart
Alt i alt skal man altid bruge Flash4 syntaks, da det altid er hurtigere end Flash5 versionen... Latterligt! Se især indlægget om String, der efter sigende er dræbende langsomt.
Forresten fandt jeg også på denne flasm-side en funktion, der godt nok skal hardcodes via flasm og ikke kan skrives i flash\'s eget ActionScript, som kan tage en funktion og en liste af dens argumenter og derefter kalde funktionen dynamisk... det ville så være:
Det er da smart, men kræver, at man er lidt af en nørd...
/barklund
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.