Elementi fondamentali dell'interazione utente

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

L'applicazione può creare interattività utilizzando ActionScript 3.0 per rispondere all'attività da parte dell'utente. In questa sezione si presuppone una certa dimestichezza con il modello di eventi ActionScript 3.0. Per ulteriori informazioni, vedete Gestione degli eventi .

Rilevamento dell'input dell'utente

L'interazione dell'utente, attraverso la tastiera, il mouse, una video/fotocamera o una combinazione di tutti questi dispositivi costituisce la base dell'interattività. In ActionScript 3.0, l'identificazione e la risposta all'interazione dell'utente riguardano principalmente l'ascolto di eventi.

La classe InteractiveObject è una sottoclasse della classe DisplayObject e fornisce la struttura comune di eventi e funzionalità necessaria per gestire l'interazione dell'utente. Non è possibile creare direttamente un'istanza della classe InteractiveObject. Gli oggetti di visualizzazione come SimpleButton, Sprite, TextField e vari componenti dello strumento di creazione di Flash e di Flex ereditano il modello di interazione dell'utente da questa classe e pertanto condividono una struttura comune. Ciò significa che le tecniche illustrate e il codice scritto per gestire l'interazione dell'utente in un oggetto derivato da InteractiveObject sono validi per tutti gli altri.

Concetti e termini importanti

Prima di proseguire, è importante sviluppare una certa familiarità con i seguenti termini relativi all'interazione dell'utente:

Codice di carattere
Un codice numerico che rappresenta un carattere nel set di caratteri corrente (associato a un tasto premuto sulla tastiera). “D” e “d”, ad esempio, hanno codici di carattere diversi anche se vengono creati dallo stesso tasto della tastiera.

Menu di scelta rapida
Il menu visualizzato quando un utente fa clic con il pulsante destro del mouse o utilizza una combinazione tastiera-mouse specifica. I comandi del menu di scelta rapida di solito agiscono direttamente sull'elemento su cui si è fatto clic. Un menu di scelta rapida per un'immagine può contenere, ad esempio, un comando per visualizzare l'immagine in una finestra separata e un comando per scaricarla.

Attivazione
L'indicazione che un elemento selezionato è attivo ed è l'elemento di destinazione dell'interazione della tastiera o del mouse.

Codice tasto
Un codice numerico che corrisponde a un tasto fisico sulla tastiera.

Gestione dello stato di attivazione

Un oggetto interattivo può essere attivato, sia a livello di codice che attraverso un'azione dell'utente. Inoltre, se la proprietà tabEnabled è impostata su true , l'utente può rendere attivo un nuovo oggetto premendo il tasto Tab. Notate che il valore tabEnabled è false per impostazione predefinita, a eccezione dei casi seguenti:

  • Per un oggetto SimpleButton, il valore è true .

  • Per un campo di testo di input, il valore è true .

  • Per un oggetto Sprite o MovieClip con buttonMode impostato su true , il valore è true .

In ognuna di queste situazioni, è possibile aggiungere un listener per FocusEvent.FOCUS_IN o FocusEvent.FOCUS_OUT per fornire un comportamento aggiuntivo quando cambia l'elemento attivo. Ciò è particolarmente utile per i campi di testo e i form, ma può essere utilizzato anche su sprite, clip filmato o qualunque oggetto che erediti dalla classe InteractiveObject. L'esempio seguente mostra come abilitare il cambiamento ciclico dell'attivazione con il tasto Tab e come rispondere al conseguente evento focus di attivazione. In questo caso, ogni quadrato cambia colore quando diventa l'elemento attivo.

Nota: Flash Professional utilizza delle scelte rapide da tastiera per gestire gli elementi attivi; pertanto è preferibile provare i file SWF in un browser o in AIR anziché in Flash per simulare correttamente la gestione degli elementi attivi.
var rows:uint = 10; 
var cols:uint = 10; 
var rowSpacing:uint = 25; 
var colSpacing:uint = 25; 
var i:uint; 
var j:uint; 
for (i = 0; i < rows; i++) 
{ 
    for (j = 0; j < cols; j++) 
    { 
        createSquare(j * colSpacing, i * rowSpacing, (i * cols) + j); 
    } 
} 
 
function createSquare(startX:Number, startY:Number, tabNumber:uint):void 
{ 
    var square:Sprite = new Sprite(); 
    square.graphics.beginFill(0x000000); 
    square.graphics.drawRect(0, 0, colSpacing, rowSpacing); 
    square.graphics.endFill(); 
    square.x = startX; 
    square.y = startY; 
    square.tabEnabled = true; 
    square.tabIndex = tabNumber; 
    square.addEventListener(FocusEvent.FOCUS_IN, changeColor); 
    addChild(square); 
} 
function changeColor(event:FocusEvent):void 
{ 
    event.target.transform.colorTransform = getRandomColor(); 
} 
function getRandomColor():ColorTransform 
{ 
    // Generate random values for the red, green, and blue color channels. 
    var red:Number = (Math.random() * 512) - 255; 
    var green:Number = (Math.random() * 512) - 255; 
    var blue:Number = (Math.random() * 512) - 255; 
     
    // Create and return a ColorTransform object with the random colors. 
    return new ColorTransform(1, 1, 1, 1, red, green, blue, 0); 
}

Individuazione dei tipi di input

Nelle versioni Flash Player 10.1 e Adobe AIR 2 è stata introdotta la possibilità di verificare l'ambiente di runtime per il supporto di tipi di input specifici. Potete utilizzare ActionScript per verificare se il dispositivo su cui il runtime è attualmente distribuito:
  • Supporta l'input penna o dito (o nessun input tocco).

  • Dispone di una tastiera virtuale o fisica per l'utente (o nessuna tastiera).

  • Visualizza un cursore (in caso contrario, le funzioni che dipendono dalla presenza di un cursore su un oggetto non funzionano).

Le API ActionScript di rilevamento dell'input includono:

Le API di rilevamento dell'input consentono di sfruttare le funzionalità del dispositivo dell'utente o fornire alternative quando tali funzionalità non sono presenti. Queste API sono particolarmente utili per lo sviluppo di applicazioni per dispositivi mobili e abilitate al tocco. Ad esempio, se disponete di un'interfaccia utente per un dispositivo mobile dotata di piccoli pulsanti per una penna, potete fornire un'interfaccia alternativa con pulsanti più grandi per un utente che utilizza il dito per l'input. Il codice seguente è relativo a un'applicazione che dispone di una funzione denominata createStylusUI() che assegna un unico set di elementi per l'interfaccia utente appropriata per l'interazione penna. Un'altra funzione, denominata createTouchUI(), assegna un altro set di elementi per l'interfaccia utente appropriata per l'interazione dito:

if(Capabilities.touchscreenType == TouchscreenType.STYLUS ){ 
    //Construct the user interface using small buttons for a stylus 
    //and allow more screen space for other visual content 
    createStylusUI(); 
} else if(Capabilities.touchscreenType = TouchscreenType.FINGER){ 
    //Construct the user interface using larger buttons 
    //to capture a larger point of contact with the device 
    createTouchUI(); 
}
Quando sviluppate applicazioni per diversi ambienti di input, considerate la tabella di compatibilità seguente:

Ambiente

supportsCursor

touchscreenType == FINGER

touchscreenType == STYLUS

touchscreenType == NONE

Desktop tradizionale

true

false

false

true

Dispositivi touchscreen capacitivi (tavolette, PDA e telefoni che rilevano il tocco con le dita, ad esempio Apple iPhone o Palm Pre)

false

true

false

false

Dispositivi touchscreen resistivi (tavolette, PDA e telefoni che rilevano il contatto ad alta pressione, preciso, ad esempio HTC Fuze)

false

false

true

false

Dispositivi non touchscreen (dispositivi e telefoni che eseguono applicazioni ma che non dispongono di schermi in grado di rilevare il contatto)

false

false

false

true

Nota: piattaforme dispositivo diverse possono supportare molte combinazioni di tipi di input. Utilizzate questa tabella come guida generale.