Arceringen in zelfstandige modus gebruiken

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

Als u een arcering in zelfstandige modus gebruikt, wordt de arcering uitgevoerd onafhankelijk van het gebruik dat u wilt maken van de uitvoer. U geeft op welke arcering moet worden uitgevoerd, stelt invoer- en parameterwaarden in en geeft op in welk object de resultaatgegevens moeten worden geplaatst. Er zijn twee redenen om een arcering in zelfstandige modus te gebruiken:

  • Verwerken van niet-grafische gegevens: in zelfstandige modus kunt u willekeurige binaire of numerieke gegevens in plaats van grafische bitmapgegevens aan de arcering doorgeven. U kunt het resultaat van de arcering niet alleen als grafische bitmapgegevens maar ook als binaire of numerieke gegevens laten retourneren.

  • Achtergrondverwerking: wanneer u een arcering in zelfstandige modus uitvoert, wordt de arcering standaard asynchroon uitgevoerd. Dit betekent dat de arcering op de achtergrond wordt uitgevoerd terwijl uw toepassing blijft lopen. Wanneer de arceringsbewerking is voltooid, ontvangt de code een melding. U kunt een arcering gebruiken waarvan de uitvoering lang duurt, zonder dat de gebruikersinterface van de toepassing bevriest of andere processen worden stilgezet terwijl de arcering wordt uitgevoerd.

U kunt een ShaderJob-object gebruiken om een arcering in zelfstandige modus uit te voeren. Eerst maakt u het ShaderJob-object en koppelt u dit aan het Shader-object dat de arcering vertegenwoordigt die moet worden uitgevoerd:

var job:ShaderJob = new ShaderJob(myShader);

Vervolgens stelt u de invoer- of parameterwaarden in die de arcering verwacht. Als u de arcering op de achtergrond uitvoert, kunt u ook een listener registreren voor de gebeurtenis complete van het ShaderJob-object. De listener wordt opgeroepen wanneer de arcering het werk heeft voltooid:

function completeHandler(event:ShaderEvent):void 
{ 
    // do something with the shader result 
} 
 
job.addEventListener(ShaderEvent.COMPLETE, completeHandler);

Vervolgens maakt u een object waarin het resultaat van de arceringsbewerking wordt geschreven nadat de bewerking is voltooid. U wijst dat object toe aan de eigenschap target van het ShaderJob-object:

var jobResult:BitmapData = new BitmapData(100, 75); 
job.target = jobResult;

Wijs een BitmapData-instantie aan de eigenschap target toe als u de ShaderJob gebruikt om grafische gegevens te bewerken. Als u binaire of numerieke gegevens verwerkt, wijst u een ByteArray-object of Vector.<Number>-instantie aan de eigenschap target toe. In dat geval moet u de eigenschappen width en height van het ShaderJob-object instellen om de hoeveelheid gegevens op te geven die naar het target -object wordt uitgevoerd.

Opmerking: U kunt de eigenschappen shader , target , width en height van het ShaderJob-object in één stap instellen door argumenten door te geven aan de constructor ShaderJob() . U doet dit als volgt: var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);

Wanneer u gereed bent om de arcering uit te voeren, roept u de methode start() van het ShaderJob-object aan:

job.start();

Standaard heeft het aanroepen van start() tot gevolg dat ShaderJob asynchroon wordt uitgevoerd. In dit geval gaat de uitvoering van het programma direct door met de volgende coderegel en wordt niet gewacht tot de arcering is voltooid. Wanneer de arceringsbewerking is voltooid, roept het ShaderJob-object de listeners voor de gebeurtenis complete aan om ze te melden dat de bewerking is voltooid. Op dat punt (dat wil zeggen in de hoofdtekst van de gebeurtenislistener complete ) bevat het target -object het resultaat van de arceringsbewerking.

Opmerking: In plaats van de eigenschap target van het object te gebruiken, kunt u het resultaat van de arcering direct ophalen uit het gebeurtenisobject dat wordt doorgegeven aan de listenermethode. Het gebeurtenisobject is een ShaderEvent-instantie. Het ShaderEvent-object heeft drie eigenschappen die kunnen worden gebruikt om het resultaat te benaderen, afhankelijk van het gegevenstype van het object dat u instelt als de eigenschap target : ShaderEvent.bitmapData , ShaderEvent.byteArray en ShaderEvent.vector .

U kunt ook het argument true doorgeven aan de methode start() . In dat geval wordt de arcering synchroon uitgevoerd. Alle code (inclusief interactie met de gebruikersinterface en eventuele andere gebeurtenissen) wordt stopgezet terwijl de arcering wordt uitgevoerd. Wanneer de arcering is voltooid, bevat het target -object het resultaat van de arcering en gaat het programma verder met de volgende coderegel.

job.start(true);