15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Anwenden von Filtern auf Anzeigeobjekte<br />

// Example of removing a filter from a set of<br />

// filters, where there may be more than one<br />

// of that type of filter applied to the filtered<br />

// object, and you only want to remove one.<br />

// A master list of filters is stored in a separate,<br />

// persistent Array variable.<br />

var masterFilterList:Array;<br />

// At some point, you store a reference to the filter you<br />

// want to remove.<br />

var filterToRemove:ConvolutionFilter;<br />

// ... assume the filters have been added to masterFilterList,<br />

// which is then assigned as the filteredObject.filters:<br />

filteredObject.filters = masterFilterList;<br />

// ... later, when it's time to remove the filter, this code gets called:<br />

// Loop through the filters to find the index of masterFilterList.<br />

var removeIndex:int = -1;<br />

var numFilters:int = masterFilterList.length;<br />

for (var i:int = 0; i < numFilters; i++)<br />

{<br />

if (masterFilterList[i] == filterToRemove)<br />

{<br />

removeIndex = i;<br />

break;<br />

}<br />

}<br />

if (removeIndex >= 0)<br />

{<br />

// Remove the filter from the array.<br />

masterFilterList.splice(removeIndex, 1);<br />

}<br />

// Apply the new set of filters to the display object.<br />

filteredObject.filters = masterFilterList;<br />

Bei diesem Verfahren (Vergleichen eines gespeicherten Filterverweises mit den Elementen im Filter-Array, um den zu<br />

entfernenden Filter zu ermitteln) müssen Sie eine separate Kopie des Filter-Arrays erstellen – der Code funktioniert<br />

nicht, wenn Sie den gespeicherten Filterverweis mit den Elementen in einem temporären Array vergleichen, das von<br />

der filters-Eigenschaft des Anzeigeobjekts kopiert wurde. Dies liegt daran, dass die Laufzeitumgebung Kopien der<br />

Filterobjekte im Array erstellt, wenn Sie ein Array zur filters-Eigenschaft zuweisen. Diese Kopien (und nicht die<br />

Originalobjekte) werden auf das Anzeigeobjekt angewendet; wenn Sie die filters-Eigenschaft in ein temporäres<br />

Array einlesen, enthält das temporäre Array Verweise auf die kopierten Filterobjekte, und nicht auf die Original-<br />

Filterobjekte. Wenn Sie dementsprechend im vorangehenden Beispiel versuchen, die Indexposition von<br />

filterToRemove zu ermitteln, indem Sie ihn mit den Filtern in einem temporären Filter-Array vergleichen, wird<br />

keine Übereinstimmung gefunden.<br />

Letzte Aktualisierung 27.6.2012<br />

291

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!