Untuk FLASH :
Untuk menyimpan data secara lokal dengan flash, Anda dapat menggunakan salah satu dari 3 cara :cache Flash Player, SharedObject , atau Referensi File obyek. Dan untuk file lokal Anda, lupakan PHP dan MySQL karena kami hanya berbicara tentang data yang Anda dapatkan ( json, xml, txt, ... ).
- Cache Flash Player :
Anda harus tahu bahwa secara default, flash player meletakkan salinan lokal file Anda di cache-nya. Anda dapat menggunakan salinan lokal ini sebagai sumber offline data Anda, tetapi di sini jangan lupa bahwa pemutar flash tidak menyimpan versi terakhir dari file jarak jauh Anda tetapi yang pertama dan http://www.example.com/data.php berbeda dengan http://www.example.com/data.php?123 bahkan jika itu adalah file yang sama! Untuk detail lebih lanjut tentang itu, lihat jawaban saya untuk pertanyaan ini .
- SharedObject :
Saya tidak tahu ukuran data yang Anda muat, tetapi seperti yang dikatakan Adobe tentang SharedObject :
Saya pikir itu tidak digunakan untuk file besar dan tidak disarankan untuk menyimpan file tetapi beberapa data sederhana. Tentu saja, sebagai cookie untuk browser, SharedOject memerlukan otorisasi pengguna untuk menulis data ke hard drive, dan pengguna dapat menghapusnya kapan saja.
- Referensi File :
Saya pikir ini adalah cara terbaik untuk melakukan apa yang Anda cari. Anda harus tahu bahwa untuk menyimpan file menggunakan FileReference, pengguna Anda diundang untuk memilih file untuk menyimpan data dan membacanya untuk kedua kalinya. Jadi jika Anda tidak ingin ada interaksi pengguna dengan aplikasi Anda, lupakan cara ini.
FileReference menggunakan contoh :
var local_file_name:String = 'local.data',
file:FileReference = new FileReference(),
local_file_filter:FileFilter = new FileFilter('local data file', '*.data'),
remote_data_url:String = 'http://www.example.com/data.php',
url_request:URLRequest,
url_loader:URLLoader,
connected:Boolean = true;
if(connected){
get_remote_data();
} else {
get_local_data();
}
function get_remote_data(): void {
//we use a param to be sure that we have always the last version of our file
url_request = new URLRequest(remote_data_url + ('?' + new Date().getTime()));
url_loader = new URLLoader();
url_loader.addEventListener(Event.COMPLETE, on_data_loaded);
url_loader.load(url_request);
}
function get_local_data(): void {
// show the select dialog to the user to select the local data file
file.browse([local_file_filter]);
file.addEventListener(Event.SELECT, on_file_selected);
}
function on_data_loaded(e:Event): void {
var data:String = e.target.data;
// if the remote data is successfully loaded, save it on a local file
if(connected){
// show the save dialog and save data to a local file
file.save(data, local_file_name);
}
// use your loaded data
trace(data);
}
function on_file_selected(e:Event): void {
file.addEventListener(Event.COMPLETE, on_data_loaded);
file.load();
}
Kode ini akan muncul setiap kali dialog simpan ke pengguna, tentu saja itu hanya contoh, Anda harus menyesuaikannya dengan kebutuhan Anda ...
EDIT
Untuk AIR :
Dengan AIR kita tidak memerlukan objek FileReference, sebagai gantinya kita menggunakan File dan FileStream objek untuk menyimpan data :
// for example, our local file will be saved in the same dir of our AIR app
var file:File = new File( File.applicationDirectory.resolvePath('local.data').nativePath ),
remote_data_url:String = 'http://www.example.com/data.php',
data_url:String = remote_data_url,
url_request:URLRequest,
url_loader:URLLoader,
connected:Boolean = true;
if(!connected){
// if we are not connected, we use the path of the local file
data_url = file.nativePath;
}
load_data();
function load_data(): void {
url_request = new URLRequest(data_url);
url_loader = new URLLoader();
url_loader.addEventListener(Event.COMPLETE, on_data_loaded);
url_loader.load(url_request);
}
function on_data_loaded(e:Event): void {
var data:String = e.target.data;
if(connected){
// save data to the local file
var file_stream:FileStream = new FileStream();
file_stream.open(file, FileMode.WRITE);
file_stream.writeUTFBytes(data);
file_stream.close();
}
trace(data);
}
Semoga bisa membantu.