Class para Manejo de accesibilidad
Para facilitar el otorgamiento de propiedades de accesibilidad a los Movieclips y botones en Falsh decidí crear esta class, espero que les sea útil ;):
* @class AccImplement
* @author Cristian Hernandez - www.cristianhenandez.org
* @version 0.2
* @description Otorga a un objeto (Movieclip o botón) propiedades de accesibilidad
* @usage <pre>var myAcc:AccObject = new AccObject (_mc[,_desc,_short])</pre>
* @param _mc (Movieclip) el movievlip
* @param _mc (Movieclip) el movievlip
* @param _desc (String) texto descriptivo (opcional en el momento de la instanciación, puede ser seteado desde
* @param _short (String) shortcut ej : Ctrl+1.
*/
import mx.accessibility.AccImpl;
class org.cristianhernandez.AccObject extends mx.accessibility.AccImpl{
/**
* @property tabPos (Number) Variable de clase que registra el taborder, esta se autoincrementa
* cada vez que se instancia la clase para que el tabIndex sea progresivo. Si se desea cambiar el tabindex
* solo basta con instanciar la clase en distinto orden
*/
private static var tabPos = 0;
var func:Function;
var _mc:Object;
var _desc:String;
var _short:String;
var trgt:Object
var EVENT_OBJECT_STATECHANGE:Number = 0x800a;
function AccObject(_mc:Object,_desc:String,_short:String){
this._mc = _mc;
this._desc = (_desc == undefined)? "":_desc
shortCut = (_short == undefined)? "":_short;
this._mc._accProps = new Object();
AccObject.tabPos++;
setProps()
}
/**
* @method set description
* @description setea la descripcion (name) del objeto, esto puede ser seteado en el momento
* de instanciar la clase.
* @usage <code>AccImplement.description = "Select to back"</code>
* @returns void
*/
public function set description (_desc:String){
this._desc = _desc;
setProps()
}
/**
* @method set description
* @description setea el atajo del tecledo (shortCut) del objeto, esto puede ser seteado en el momento
* de instanciar la clase
* @usage <code>AccImplement.shortCut = "Ctrl+1"</code>
* @returns void
*/
public function set shortCut (_short:String){
this._short = _short;
this._mc.obj = new Object();
this._mc.obj.trgt = this;
this._mc.obj.onKeyDown = myKeyDown;
Key.addListener(this._mc.obj);
setProps()
}
/**
* @method set keyHandler
* @description setea la funcion de que será llamada cuando se realice el atrajo del teclado, por defecto esta
* funcion es el onRelease del boton, es decir que si no se llama este metodo cuando se ejecute el shortcut se
* llamara el evento que tiene asignado en el onRelaese
* Como parametro de esa funcion se pasa el objeto al que se le realizó el shortcut<br />
* Ejemplo:<br />
* <code>function onClickBtn(btn){
* trace("Seleccion de boton nombre: "+btn._name)
* }
* </code>
* @param func (Function) funcion a ajecutar
* @usage <code>AccImplement.keyHandler = myFunction</code>
* @returns void
*/
public function set keyHandler(func:Function){
this.func = func;
}
/**
* @method set myKeyDown
* @description (private)
* @returns void
*/
private function myKeyDown():Void {
with(this.trgt){
var code_number:Number = Key.getCode();
var short_array = _short.split("+");
var cond1:Boolean = short_array[0] == "Ctrl" and Key.isDown(Key.CONTROL);
var cond2:Boolean = Key.getCode() == ord(short_array[1]);
if(cond1 and cond2){
Selection.setFocus(_mc);
Accessibility.sendEvent(_mc, 0, EVENT_OBJECT_STATECHANGE,true );
if(func == undefined){
//accion por defecto
_mc.onRelease();
}else{
// llamada a la function
func.call(_mc)
}
}
}
}
/**
* @method setProps
* @description (private) actualiza las propiedades de accesibilidad en el objeto
* @returns void
*/
private function setProps():Void{
this._mc._accProps.shortcut = this._short;
this._mc._accProps.forcesimple = true;
this._mc._accProps.silent = false;
this._mc.tabIndex = AccObject.tabPos;
this._mc._accProps.name = this._desc;
Accessibility.updateProperties();
}
}
Usabilidad: Presione aquí para leer el post
Me parecen que van contra todos los criterios de usabilidad los mensajes como este:

Y todas sus variaciones como:
"Haga click aquí para entrar"
"Haga click sobre la foto par acerrar la ventana"
"Presione el botón azul para entrar a nuestro sitio"
"Click aquí"
"Pase el puntero de mouse por la foto para ver las opciones"
El diseño de un sitio debe ser lo suficientemente intuitivo para no tener que estar dándole órdenes al usuario que haga esta o tal cosa.
Lo que digo talvéz parezca obvio o cuestiones ya superadas en los nuevos sitios, pero sigo encontrándome con este tipo de cosas en muchos diseños nuevos.
Hogar, dulce hogar
Año nuevo, casa nueva y vida nueva, dicen
