Arsip Kategori: flash

Shared Object di Flash

Tadi saya baru buka help yang tersedia di Flash, khususnya bagian actionscript, ternyata selain dapat membuat animasi bergerak(secara langsung) lewat actionscript, kita juga bisa membuat semacam tempat penyimpanan (memori) untuk aplikasi Flash yang kita buat. Ya, ini cukup menjelaskan tentang aplikasi-aplikasi Flash seperti ‘metro diary’, si diary merah yang isinya dapat berubah sesuai user yang kita gunakan. Ternyata yang digunakan disini adalah objek ‘Shared Object’. Jadi disini akan dijelaskan sedikit tentang yang satu ini sekaligus dengan contoh sederhananya…

Ternyata, Flash ini punya banyak fitur juga ya,,

Ini potongan dari Help-nya

“The SharedObject class is used to read and store limited amounts of data on a user’s computer. Shared objects offer real-time data sharing between objects that are persistent on the user’s computer. Local shared objects are similar to browser cookies.”

Kurang lebih artinya: Class SharedObject digunakan untuk membaca dan menyimpan sejumlah data (terbatas) di komputer pengguna. Shared object memberikan pertukaran data antar objek secara real-time yang persisten(tetap) di komputer pengguna. Shared object lokal mirip dengan cookies pada browser.

Nah, dari artinya itu sekarang kita tahu bahwa data disimpan secara lokal di harddisk, secara teknis tempatnya di “c:\Documents and Settings\[nama_user] \Application Data\Macromedia\Flash Player\#SharedObjects\”(ini di windows xp, di windows nt mungkin serupa, tapi kalau di win9x saya belum coba)

Untuk mencobanya, ayo kita coba actionscript yang terdapat di help Flash 8 ini (ok, dengan sedikit modifikasi tentunya),

// deklarasi variabel

var items_array:Array = new Array(101, 346, 483);

var currentUserIsAdmin:Boolean = true;

var currentUserName:String = “khalifavi”;

// deklarasi objek

var my_so:SharedObject = SharedObject.getLocal(“tes_sharedobject”, “/”);

// inisialisasi data objek dengan nilai dari variabel

my_so.data.itemNumbers = items_array;

my_so.data.adminPrivileges = currentUserIsAdmin;

my_so.data.userName = currentUserName;

nah ini dia yang dimaksud dengan penyimpanan

, baris var adalah deklarasi dan inisialisasi variabel, disini dicoba beberapa jenis variabel yaitu array, boolean, dan string…

, baris var my_so,,, adalah deklarasi shared object, ini diperlukan(penting!!, mana bisa menggunakan kalau sebelumnya tidak dibuat terlebih dahulu)[1].

, baris selanjutnya ‘my_so.data.itemNumbers = items_array;’, adalah ekspresi memasukan nilai ke shared object secara permanen[2]

apabila kode tersebut dijalankan, maka akan terdapat satu file baru setelah movie tersebut di-save, di-run, dan file tersebut akan muncul setelah movie di-close[3]

note:

[1]fungsi getLocal memiliki sintaks getLocal(sharedobject[, path, secured]), {dimana sharedobject:String adalah nama file shared object yang akan kita buat, path:String adalah direktori penyimpanan sharedobject(secara relatif), dan secured:Boolean adalah status penggunaan pengiriman lewat HTTPS, yang ini sebenarnya opsional, kurang jelas??, lebih jelasnya ada di help Flash}

[2]maksudnya permanen disini adalah shared object akan tetap ada(ditulis ke file) meskipun setelah movie di-close. Bisa dibuat ‘semacam’ volatile dengan tidak menuliskan data(contoh: daripada menulis ‘my_so.data.itemNumbers = items_array;’, gunakan saja ‘my_so.itemNumbers = items_array;’) hal ini sangat berguna jika kita menginginkan sharedobject untuk ada hanya pada saat movie dijalankan [lihat ilustrasi di contoh]

[3]data bisa saja disimpan langsung(tanpa harus di-close) dengan menambahkan baris ‘my_so.flush()’ di akhir kode

disini saya sertakan juga file contoh (dalam format Flash 8)

isi dari contoh.zip:::

namaFile(tipe; penjelasan)

ref_so.html(HTML Document; file referensi beberapa fungsi yang berhubungan dengan sharedObject, ini dikutip dari Flash 8 Help)

gambar#.jpg(JPG Graphic; beberapa file gambar, merupakan penjelasan visual dari dokumen ref_so.html)

data.fla(Flash Document; fileFlash percobaan dalam menggunakan ‘data’ [non-volatile]/tidak menggunakan ‘data'[volatile])

flush.fla(Flash Document; file Flash percobaan menggunakan fungsi flush)

penjelasan.html(HTML Document; file yang menerangkan tentang isi contoh)

Iklan

membuat grafik sederhana dengan Flash (disatuin aja)

Beberapa hari yang lalu, saya bertemu dengan teman yang mengikuti kuliah di semester pendek, yaitu kuliah grafika komputer. grafika komputer menuntut kita untuk dapat membuat grafik menggunakan bahasa pemrograman yang kita kuasai…

karena itu, sebagai dasar, saya sudah membuat grid sederhana menggunakan aplikasi Flash (yang saya gunakan Flash 8), menggunakan beberapa baris actionscript saja

grid sederhana x,y

ini actionscript-nya..

// ambil dimensi stage
dh = Stage.height;
dw = Stage.width;
// panjang grid dalam pixel
grid = 30;
// tentukan x1,y1,x2,y2
inputx1 = 1;
inputy1 = 1;
inputx2 = -8;
inputy2 = 5;
// buat movie clip
isi_mc = createEmptyMovieClip(“isi_mc”, 0);
isi_mc.lineStyle(2.5);
isi_mc.moveTo(0, 0);
isi_mc.lineTo(dw, 0);
isi_mc.lineTo(dw, dh);
isi_mc.lineTo(0, dh);
isi_mc.lineTo(0, 0);
// buat garis cartesian x dan y
isi_mc.lineStyle(2, 0xaaaaaa);
isi_mc.moveTo(dw/2, 0);
isi_mc.lineTo(dw/2, dh);
isi_mc.moveTo(0, dh/2);
isi_mc.lineTo(dw, dh/2);
// buat grid setiap angka pixel grid yang telah ditentukan
isi_mc.lineStyle(1, 0xdddddd);
// grid x ke kanan
for (ax=1; grid*ax<dw/2; ax++) {
isi_mc.moveTo(dw/2+grid*ax, 0);
isi_mc.lineTo(dw/2+grid*ax, dh);
}
// grid x ke kiri
for (ax=1; grid*ax<dw/2; ax++) {
isi_mc.moveTo(dw/2-grid*ax, 0);
isi_mc.lineTo(dw/2-grid*ax, dh);
}
// grid y ke atas
for (ay=1; grid*ay<dh/2; ay++) {
isi_mc.moveTo(0, dh/2+grid*ay);
isi_mc.lineTo(dw, dh/2+grid*ay);
}
// grid y ke bawah
for (ay=1; grid*ay<dh/2; ay++) {
isi_mc.moveTo(0, dh/2-grid*ay);
isi_mc.lineTo(dw, dh/2-grid*ay);
}
// buat garis dari koordinat x1,y1 ke x2,y2
isi_mc.lineStyle(2, 0x000000);
isi_mc.moveTo((dw/2)+(grid*inputx1), (dh/2)-(grid*inputy1));
isi_mc.lineTo((dw/2)+(grid*inputx2), (dh/2)-(grid*inputy2));

grid ditambah dengan grid-resolution

grid ini sebenarnya masih sama dengan posting sebelumnya, tapi ini dilengkapi dengan grid-resolution (atau apalah namanya, ini hanya istilah saya saja). perbedaannya dapat dilihat ada garis tipis yang ikut membentuk grid.

actionscript-nya

// ambil dimensi stage
dh = Stage.height;
dw = Stage.width;
// panjang grid dalam pixel
grid = 10;
// resolusi grid

res = 3;
// tentukan x1,y1,x2,y2
inputx1 = 1;
inputy1 = 1;
inputx2 = -3;
inputy2 = 5;
// buat movie clip
isi_mc = createEmptyMovieClip(“isi_mc”, 0);
isi_mc.lineStyle(2.5);
isi_mc.moveTo(0, 0);
isi_mc.lineTo(dw, 0);
isi_mc.lineTo(dw, dh);
isi_mc.lineTo(0, dh);
isi_mc.lineTo(0, 0);
// jika resolusi < 1 maka grid tipis tidak perlu dibuat
if (res>1) {
// buat grid tipis setiap angka pixel grid yang telah ditentukan
isi_mc.lineStyle(1, 0xeeeeee);
// grid x ke kanan dan kiri
for (ax=1; grid*ax<dw/2; ax++) {
isi_mc.moveTo(dw/2+grid*ax, 0);
isi_mc.lineTo(dw/2+grid*ax, dh);
isi_mc.moveTo(dw/2-grid*ax, 0);
isi_mc.lineTo(dw/2-grid*ax, dh);
}
// grid y ke atas dan ke bawah
for (ay=1; grid*ay<dh/2; ay++) {
isi_mc.moveTo(0, dh/2+grid*ay);
isi_mc.lineTo(dw, dh/2+grid*ay);
isi_mc.moveTo(0, dh/2-grid*ay);
isi_mc.lineTo(dw, dh/2-grid*ay);
}
}
// buat grid tebal resolution dari res yang telah ditentukan
isi_mc.lineStyle(1.5, 0xdddddd);
// grid x ke kanan dan kiri
for (ax=res; grid*ax<dw/2; ax += res) {
isi_mc.moveTo(dw/2+grid*ax, 0);
isi_mc.lineTo(dw/2+grid*ax, dh);
isi_mc.moveTo(dw/2-grid*ax, 0);
isi_mc.lineTo(dw/2-grid*ax, dh);
}
// grid y ke atas dan ke bawan
for (ay=res; grid*ay<dh/2; ay += res) {
isi_mc.moveTo(0, dh/2+grid*ay);
isi_mc.lineTo(dw, dh/2+grid*ay);
isi_mc.moveTo(0, dh/2-grid*ay);
isi_mc.lineTo(dw, dh/2-grid*ay);
}
// buat garis cartesian x dan y
isi_mc.lineStyle(2, 0xaaaaaa);
isi_mc.moveTo(dw/2, 0);
isi_mc.lineTo(dw/2, dh);
isi_mc.moveTo(0, dh/2);
isi_mc.lineTo(dw, dh/2);
// buat garis dari koordinat x1,y1 ke x2,y2
isi_mc.lineStyle(2, 0x000000);
isi_mc.moveTo((dw/2)+(grid*inputx1)*res, (dh/2)-(grid*inputy1)*res);
isi_mc.lineTo((dw/2)+(grid*inputx2)*res, (dh/2)-(grid*inputy2)*res);

melengkapi grafik bagian2, ini ditambahkan dengan teks pada garis pandu x,y

ini actionscript-nya

// ambil dimensi stage
dh = Stage.height;
dw = Stage.width;
// panjang grid dalam pixel
grid = 10;
// resolusi grid
res = 3;
// tentukan x1,y1,x2,y2
inputx1 = 1;
inputy1 = 1;
inputx2 = -3;
inputy2 = 5;
// buat movie clip
isi_mc = createEmptyMovieClip(“isi_mc”, 0);
isi_mc.lineStyle(2.5);
isi_mc.moveTo(0, 0);
isi_mc.lineTo(dw, 0);
isi_mc.lineTo(dw, dh);
isi_mc.lineTo(0, dh);
isi_mc.lineTo(0, 0);
// jika resolusi < 1 maka grid tipis tidak perlu dibuat
if (res>1) {
// buat grid tipis setiap angka pixel grid yang telah ditentukan
isi_mc.lineStyle(1, 0xeeeeee);
// grid x ke kanan dan kiri
for (ax=1; grid*ax<dw/2; ax++) {
isi_mc.moveTo(dw/2+grid*ax, 0);
isi_mc.lineTo(dw/2+grid*ax, dh);
isi_mc.moveTo(dw/2-grid*ax, 0);
isi_mc.lineTo(dw/2-grid*ax, dh);
}
// grid y ke atas
for (ay=1; grid*ay<dh/2; ay++) {
isi_mc.moveTo(0, dh/2+grid*ay);
isi_mc.lineTo(dw, dh/2+grid*ay);
isi_mc.moveTo(0, dh/2-grid*ay);
isi_mc.lineTo(dw, dh/2-grid*ay);
}
}
// buat grid tabel resolution dari res yang telah ditentukan
// dan (eksperimental) buat teks 🙂 big success

isi_mc.lineStyle(1.5, 0xdddddd);
// grid x ke kanan dan kiri
for (ax=res; grid*ax<dw/2; ax += res) {
isi_mc.moveTo(dw/2+grid*ax, 0);
isi_mc.lineTo(dw/2+grid*ax, dh);
var mov_txt = createTextField(“text_txt”, this.getNextHighestDepth(), (dw/2+grid*ax)-5, dh/2, 20, 20);
mov_txt.text = ax/res;
isi_mc.moveTo(dw/2-grid*ax, 0);
isi_mc.lineTo(dw/2-grid*ax, dh);
var mov_txt = createTextField(“text_txt”, this.getNextHighestDepth(), (dw/2-grid*ax)-5, dh/2, 20, 20);
mov_txt.text = -(ax/res);
}
// grid y ke atas
for (ay=res; grid*ay<dh/2; ay += res) {
isi_mc.moveTo(0, dh/2+grid*ay);
isi_mc.lineTo(dw, dh/2+grid*ay);
var mov_txt = createTextField(“text_txt”, this.getNextHighestDepth(), dw/2, (dh/2-grid*ay)-7, 20, 20);
mov_txt.text = ay/res;
isi_mc.moveTo(0, dh/2-grid*ay);
isi_mc.lineTo(dw, dh/2-grid*ay);
var mov_txt = createTextField(“text_txt”, this.getNextHighestDepth(), dw/2, (dh/2+grid*ay)-7, 20, 20);
mov_txt.text = -(ay/res);
}
// buat garis cartesian x dan y
isi_mc.lineStyle(2, 0xaaaaaa);
isi_mc.moveTo(dw/2, 0);
isi_mc.lineTo(dw/2, dh);
isi_mc.moveTo(0, dh/2);
isi_mc.lineTo(dw, dh/2);
// buat garis dari koordinat x1,y1 ke x2,y2
isi_mc.lineStyle(2, 0x000000);
isi_mc.moveTo((dw/2)+(grid*inputx1)*res, (dh/2)-(grid*inputy1)*res);
isi_mc.lineTo((dw/2)+(grid*inputx2)*res, (dh/2)-(grid*inputy2)*res);