15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Ziehen und Ablegen in AIR<br />

Im folgenden Beispiel wird eine Dateizusage mit einem benutzerdefinierten asynchronen Datenprovider erstellt. Die<br />

Datenprovider-Klasse erweitert ByteArray (für die IDataInput-Unterstützung) und implementiert die<br />

IEventDispatcher-Schnittstelle. Bei jedem Timer-Ereignis generiert das Objekt einen Datenblock und setzt ein<br />

progress-Ereignis ab, um die Laufzeit über die Verfügbarkeit der Daten zu informieren. Wenn ausreichend Daten<br />

generiert wurden, setzt das Objekt ein complete-Ereignis ab.<br />

package<br />

{<br />

import flash.events.Event;<br />

import flash.events.EventDispatcher;<br />

import flash.events.IEventDispatcher;<br />

import flash.events.ProgressEvent;<br />

import flash.events.TimerEvent;<br />

import flash.utils.ByteArray;<br />

import flash.utils.Timer;<br />

[Event(name="open", type="flash.events.Event.OPEN")]<br />

[Event(name="complete", type="flash.events.Event.COMPLETE")]<br />

[Event(name="progress", type="flash.events.ProgressEvent")]<br />

[Event(name="ioError", type="flash.events.IOErrorEvent")]<br />

[Event(name="securityError", type="flash.events.SecurityErrorEvent")]<br />

public class AsyncDataProvider extends ByteArray implements IEventDispatcher<br />

{<br />

private var dispatcher:EventDispatcher = new EventDispatcher();<br />

public var fileSize:int = 0; //The number of characters in the file<br />

private const chunkSize:int = 1000; //Amount of data written per event<br />

private var dispatchDataTimer:Timer = new Timer( 100 );<br />

private var opened:Boolean = false;<br />

public function AsyncDataProvider()<br />

{<br />

super();<br />

dispatchDataTimer.addEventListener( TimerEvent.TIMER, generateData );<br />

}<br />

public function begin():void{<br />

dispatchDataTimer.start();<br />

}<br />

public function end():void<br />

{<br />

dispatchDataTimer.stop();<br />

}<br />

private function generateData( event:Event ):void<br />

{<br />

if( !opened )<br />

{<br />

var open:Event = new Event( Event.OPEN );<br />

dispatchEvent( open );<br />

opened = true;<br />

}<br />

else if( position + chunkSize < fileSize )<br />

{<br />

for( var i:int = 0; i

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

Saved successfully!

Ooh no, something went wrong!