flex Flex i Air


Listing 1. Dostęp do schowka
import flash.desktop.*;
public function copy(text:String):void {
// Wyczyszczenie aktualnego schowka
Clipboard.generalClipboard.clear();
// Ustawienie naszych danych
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, text);
}
public function paste():String{
// Odczytujemy tylko tekstowy schowek
if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)) {
// Zwracamy zawartość rzutowaną jako String
return String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));
} else {
return null;
}
}


Listing 2. Przeciągnij i upuść
nativeDragEnter="onDragIn(event)" nativeDragDrop="onDrag(event)">

import flash.desktop.*;

public function onDragIn(event:NativeDragEvent):void{
// Zaakceptowanie dowolnego obiektu
NativeDragManager.acceptDragDrop(this);
}

public function onDrag(event:NativeDragEvent):void {
// Ustawienie domyslnej akcji
NativeDragManager.dropAction = NativeDragActions.COPY;
// Zakładamy że przeciągnięto plik
var dropfiles:Array = event.clipboard.getData( ClipboardFormats.FILE_LIST_FORMAT) as Array;
// Wyliczamy wszystkie przeciągnięte pliki
for each (var file:File in dropfiles){
trace(file.nativePath);
}
}
]]>




Listing 3. Obsługa plików
// Funkcja obsługująca zakończenie operacji
public function onComplete(event:Event):void {
trace('Plik usunięty');
}

// Funkcja obsługująca błąd wejścia/wyjścia
public function onIoerror(event:IOErrorEvent):void {
trace('Błąd wejścia/wyjścia podczas usuwania pliku');
}

public function delFile():void {
// Stworzenie tymczasowego pliku
var file:File = File.createTempFile();
// Ustawienie funkcji obsługujących zdarzenia
file.addEventListener(Event.COMPLETE, onComplete);
file.addEventListener(IOErrorEvent.IO_ERROR, onIoerror);
// Asynchroniczne usunięcie pliku
file.deleteFileAsync();
}



Listing 4. Asynchroniczny zapis do pliku
public function writeToFile():void {
var file:File = File.createTempFile();
var fileStream:FileStream = new FileStream();
// Otwarcie strumienia pliku asynchronicznie
fileStream.openAsync(file, FileMode.WRITE);
fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, onOutputProgress);
// Zapisanie 1024kB losowych danych
for (var i:int = 0; i < 1024*1024; i++) {
fileStream.writeByte(Math.round(Math.random()*255));
}
}

public function onOutputProgress(event:ProgressEvent):void {
trace('Pozostało '+event.target.bytesPending+' bajtów');
}



Listing 5. Operacje na DOM

public function navigate():void {
// Ustawienie wartości input-a z zapytaniem
html.domWindow.document.getElementsByName('q')[0].value = 'adobe air';
// Wysłanie formularza
html.domWindow.document.getElementsByName('f')[0].submit();
}
]]>






Listing 6. Przekazywanie zdarzeń DOM do aplikacji

public function setupListeners():void {
// Znalezienie wszystkich odnośników
var linki = html.domWindow.document.getElementsByTagName('a');
for(var i:int = 0; i < linki.length; i++) {
// Ustawienie własnej funkcji reagującej na kliknięcie
linki[i].addEventListener("click", onClick);
}
}

public function onClick(event:Object) {
// Wyświetlenie adresu docelowego
trace('Kliknięto link do '+event.target.href);
// Anulowanie domyślnej akcji (przejście do adresu)
event.preventDefault();
}
]]>








Test

]]>





Listing 8. Obsługa bazy SQLite

var connection:SQLConnection = new SQLConnection();
var query:SQLStatement = new SQLStatement();

public function connect():void {
// Ustawienie obsługi zdarzeń
connection.addEventListener(SQLEvent.OPEN, onOpen);
query.addEventListener(SQLEvent.RESULT, onResult);
// Przypisanie połączenia do zapytania
query.sqlConnection = connection;

// Stworzenie tymczasowego pliku
var dbFile:File = File.createTempFile();
// Otwarcie bazy danych
connection.open(dbFile);
}

public function execute():void {
query.text = taQuery.text;
query.execute();
}

public function onOpen(event:SQLEvent):void {
btnExecute.enabled = true;
}

public function onResult(event:SQLEvent):void {
// Pobranie wyniku
var result:SQLResult = query.getResult();
if (result != null) {
var numRows:int = result.data.length;
for (var i:int = 0; i < numRows; i++) {
var row:Object = result.data[i];
// Manipulacja danymi z rekordu
}
}
}
]]>








Wyszukiwarka