El ejemplo que puse lo hice con FlashDeveloper y funcionaba (quité del código todos los import).
He hecho un corta y pega
Código ActionScript :
var arrayOrigen:Array = new Array(2, "Hola", "Mundo", { value:3, text:"Texto" } );
var bytes:ByteArray = new ByteArray();
bytes.writeObject(arrayOrigen);
EncryptedLocalStore.setItem("data", bytes);
var arrayLeido:Array = EncryptedLocalStore.getItem("data").readObject() as Array;
var texto:TextField = new TextField();
addChild(texto);
//texto.text = arrayLeido[1];
texto.text = arrayLeido.toString();
EncryptedLocalStore.removeItem("data");
en un fotograma con CS4 -Archivo nuevo de Adobe Air- y también me funciona
También con CS4, le doy como clase de documento "Main" y escribo en main.as ¡¡OJO!! que he cambiado la Clase para que extienda de MovieClip en lugar de de Sprite
Código ActionScript :
package{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.utils.ByteArray;
import flash.data.EncryptedLocalStore;
import flash.text.TextField;
public class Main extends MovieClip {
public function Main():void {
var arrayOrigen:Array = new Array(2, "Hola", "Mundo", { value:3, text:"Texto" } );
var bytes:ByteArray = new ByteArray();
bytes.writeObject(arrayOrigen);
EncryptedLocalStore.setItem("data", bytes);
var arrayLeido:Array = EncryptedLocalStore.getItem("data").readObject() as Array;
var texto:TextField = new TextField();
addChild(texto);
//texto.text = arrayLeido[1];
texto.text = arrayLeido.toString();
EncryptedLocalStore.removeItem("data");
}
}
}
y me funciona igualmente
He comentado la línea
Código ActionScript :
//EncryptedLocalStore.removeItem("data");
Lo he ejecutado
Ahora he comentado las líneas
Código ActionScript :
// var arrayOrigen:Array = new Array(2, "Hola", "Mundo", { value:3, text:"Texto" } );
// var bytes:ByteArray = new ByteArray();
// bytes.writeObject(arrayOrigen);
// EncryptedLocalStore.setItem("data", bytes);
y, ejecutándolo me sigue funcionando.
No se me ocurre ninguna prueba más

El
Error #2006: The supplied index is out of bounds.
at flash.utils::ByteArray/readObject()
y el que me comentas con el try..catch suena a que NO está grabando.
Se me ocurre a que fuerces el argumento al false en el setItems
o que compruebes la longitud del Bytess Array antes de hacer el setItems
Código ActionScript :
bytes.writeObject(arrayOrigen);
trace(bytes.length); //Comprobamos los bytes que tiene -en mi ejemplo 42
EncryptedLocalStore.setItem("data", bytes,false); //<--he puesto como tercer argumento "false"