Operation Manual
496
FLASH CS4 PROFESSIONAL GEBRUIKEN
Tips en trucs
Hoewel u niet kunt bepalen hoe en wanneer Flash Lite het 'garbagecollection-proces' uitvoert, hebt u toch de
mogelijkheid om op het door u gewenste moment geheugen dat niet langer nodig is, vrij te maken. Gebruik voor
tijdlijnvariabelen en globale variabelen de instructie
delete om geheugen dat ActionScript-objecten gebruiken, vrij te
maken. Voor lokale variabelen, bijvoorbeeld een variabele die is gedefinieerd binnen een functiedefinitie, kunt u de
instructie
delete niet gebruiken om geheugen van een object vrij te maken. U kunt echter wel de variabele die verwijst
naar het object, op
null instellen. Hiermee maakt u geheugen vrij dat door het object wordt gebruikt, mits er geen
andere verwijzingen naar dat object aanwezig zijn.
De volgende twee codevoorbeelden laten zien hoe u geheugen dat door objecten wordt gebruikt, kunt vrijmaken door
de variabele die naar deze objecten verwijst, te verwijderen. De voorbeelden zijn identiek, met dit verschil dat met het
eerste voorbeeld een tijdlijnvariabele wordt gemaakt en met het tweede een globale variabele.
// First case: variable attached to a movie or
// movie clip timeline
//
// Create the Date object.
var mcDateObject = new Date();
// Returns the current date as a string.
trace(mcDateObject);
// Delete the object.
delete mcDateObject;
// Returns undefined.
trace(mcDateObject);
//
// Second case: global variable attached to a movie or
// movie clip timeline
//
// Create the Date object.
_global.gDateObject = new Date();
// Returns the current date as a string.
trace(_global.gDateObject);
// Delete the object.
delete _global.gDateObject;
// Returns undefined.
trace(_global.gDateObject);
U kunt, zoals al eerder is aangegeven, de instructie delete niet gebruiken om geheugen vrij te maken dat door een
lokale functievariabele wordt gebruikt. In plaats daarvan kunt u de variabeleverwijzing op
null instellen, waarmee u
hetzelfde bereikt als met de instructie
delete.
function func()
{
// Create the Date object.
var funcDateObject = new Date();
// Returns the current date as a string.
trace(funcDateObject);
// Delete has no effect.
delete funcDateObject;
// Still returns the current date.
trace(funcDateObject);
// Set the object reference to null.
funcDateObject = null;
// Returns null.
trace(funcDateObject);
}
// Call func() function.
func();