I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du sletter alle tidligere referencer som variabler før måtte have indeholdt og sætte den til at indeholde noget nyt - og det er så undefined indtil videre...
Tak for jeres indlæg. Kan jeg ikke få jer begge til at smide et svar?
Jakwag >> Jeg er enig med dig i at det virker mærkeligt først at oprette tekstfelt og derefter lave en reference til et variabelnavn. Det virker som den omvendte måde at gøre det på:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); var min_txt:TextField = foo_txt;
Strict Data Typing (fasttypning) er KUN syntaks i udviklingen. Det er kun ment som en hjælp til at skrive actionscript - det findes ikke i en SWF og her kan man sagtens have andre typer end de fasttypede...
Og selvfølgelig kan man have flere referencer til et objekt. I en tom film er _root det samme som this eller _level0 - det har du jo altid vidst, så ja, du kan også lave endnu flere referencer til samme objekt. Komplekse datatyper er jo pass by reference, mens de simple (string, number, boolean, null, undefined) er pass by value og derfor kun kan have én reference.
Jeg har mit første kapitel klar - netop om variabler og datatyper og herunder også lidt om fasttypning - kan sende det over hvis det har interesse ;)
Hm, overraskende nok kan du ikke helt fjerne referencen til foo_txt:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); trace("forsøger at slette: "+delete foo_txt); // giver false - den kan ikke slettes trace("foo_txt efter delete: "+(foo_txt instanceof TextField)); // yup, stadig TextField foo_txt.text = "foo";
Det er faktisk lidt syret... Jeg har også prøvet at sætte "kan slettes" flag med ASSetPropFlags... Hmm... det er faktisk lidt mærkeligt...
Men ja, så kan du fasttype dit tekstfelts-reference med:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); var foo_txt:TextField;
Og herefter vil den typechecke som et tekstfelt - det ville den ikke ellers.
Årsagen til at det kan lade sig gøre er, at variablen/referencen "låses" på en eller anden vis. Man kan heller ikke overskrive den:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); delete foo_txt; var foo_txt:TextField; var foo_txt:String; foo_txt.text = "hej";
Hm, jeg oplever nogle mærkværdigheder ved typecheckeren lige nu... Skal lige forske en hel masse i det - meget interessant - se for eksempel:
var test:XML = new XML(); delete text; var test:Array = new Array(); test.length = 2;
4. linje giver fejl - den siger at xml ikke har nogen 'length'-egenskab. Men den er jo også redefineret som et array(?)... Det virker ikke så gennemtænkt :(
"Jeg har mit første kapitel klar - netop om variabler og datatyper og herunder også lidt om fasttypning - kan sende det over hvis det har interesse ;)"
Fedt, er du ved at skrive en AS bog? Under alle omstændigheder må du meget gerne sende dit kapitel til mig. Du kan skrive til rthuls@hotmail.com
barklund > Ja, det er lidt mystisk, det giver jeg dig ret i.
det gælder osse for de simple datatyper. f.eks.
var test:String = "hejsa"; var test:Number; trace(test)//output "hejsa"
så uanset hvad sletter var altså ikke som du siger den burde. (det vælger jeg så at tro på :) )
med hensyn til:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); trace("forsøger at slette: "+delete foo_txt); // giver false - den kan ikke slettes trace("foo_txt efter delete: "+(foo_txt instanceof TextField)); // yup, stadig TextField foo_txt.text = "foo";
Så kan du ikke fjerne et TextField delete men kun med removeTextField:
_root.createTextField("foo_txt", 1, 1, 1, 100, 100); trace("forsøger at slette: "+foo_txt.removeTextField()); // giver undefined trace("foo_txt efter delete: "+(foo_txt instanceof TextField)); // false, den er væk foo_txt.text = "foo";
Når du er færdig med dit kapitel vil jeg også meget gerne læse det igennem.
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.