
Originally Posted by
bebiflash
iya, aku juga bingung sama class dan package... ayo coba kita cari cara membuat package dengan actionscript di atas... semangat...
Gue coba bantu. Cuma patut diingat, gue newbie AS3. Jadi ada kemungkinan solusi yg gw kasih ini bukan yg terbaik, tunggu para master AS3 saja
Kita buat class di folder yang sama. Jika ingin punya folder khusus, sama saja, import classpath
Ada tiga file Actionscript utk masing-masing kasus.
Nama variabel akan diusahakan sama dg kode di atas dan nama variabel di class akan diusahakan mewakili apa yang diwakili di fla
1. save as Penjumlahan.as
PHP Code:
package {
//package com.nayzuko.teks { //ini merujuk ke classpath folder, jika class ada dalam folder
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
public class Penjumlahan extends MovieClip {
public var hasilakhir:Number;
public var wakilInput1:TextField;
public var wakilInput2:TextField;
public var hasilakhir_teks:TextField;
public function Penjumlahan(tambahAng:MovieClip, input1:TextField,input2:TextField,dyntxtHasil:TextField)
{
wakilInput1=input1;
wakilInput2=input2;
hasilakhir_teks=dyntxtHasil;
wakilInput1.restrict="0-9";
wakilInput2.restrict="0-9"
tambahAng.buttonMode=true;
tambahAng.addEventListener(MouseEvent.CLICK,penambahan);
}
function penambahan(e:Event) {
var value1:Number=Number(wakilInput1.text);
var value2:Number=Number(wakilInput2.text);
hasilakhir=value1 + value2;
hasilakhir_teks.text=String(hasilakhir);
}
}
}
2. Teks.as
PHP Code:
package
{
public class Teks
{
public function tambahteks(isiInput:String = ""):String
{
var wakilteks:String;
if (isiInput == "")
{
wakilteks = "";
}
else
{
wakilteks = isiInput;
}
return wakilteks;
}
}
}
3. Duplikasi.as
PHP Code:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
public class Duplikasi extends MovieClip {
public var wakilInput1:TextField;
public var hasilakhir_teks:TextField;
public function Duplikasi(tambahTxt:MovieClip, input1:TextField,dyntxtHasil:TextField)
{
wakilInput1=input1;
hasilakhir_teks=dyntxtHasil;
wakilInput1.restrict="A-Za-z0-9";
tambahTxt.buttonMode=true;
tambahTxt.addEventListener(MouseEvent.CLICK,pengulangan);
}
function pengulangan(e:Event) {
if (!wakilInput1.text=="") {
for (var i:uint=1; i<=5; i+=1) {
var value1:String=String(wakilInput1.text);
hasilakhir_teks.appendText(i+". "+value1+"\n");
}
return hasilakhir_teks;
}
}
}
}
Kita pakai ketiga class dalam satu file fla. Misalnya "test1.fla"
Isi as di frame 1:
PHP Code:
//import com.nayzuko.teks.Penjumlahan; //jika pakai folder
//////////////////////////////////////////
//case 1
////////////////////////////////////////////
var hasil:Penjumlahan = new Penjumlahan(tambahAng, a1, a2, a3);
a1.border = true;
a2.border = true;
a3.border = true;
//////////////////////////////////////////
//case 2
////////////////////////////////////////////
var inputan1:Teks = new Teks();
var inputan2:Teks = new Teks();
t1.border = true;
t2.border = true;
t3.border = true;
tambahTxt.buttonMode=true;
//Buang comment jika ingin inputan langsung terisi
//t1.text="Baba";
//t2.text="Flash";
t2.addEventListener(KeyboardEvent.KEY_DOWN, tekanEnter);
tambahTxt.addEventListener(MouseEvent.CLICK, mouseKlik);
function tekanEnter(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
{
t3.text=inputan1.tambahteks(t1.text);
t3.appendText(inputan2.tambahteks(t2.text));
}
}
function mouseKlik(event:MouseEvent):void
{
t3.text=inputan1.tambahteks(t1.text);
t3.appendText(inputan2.tambahteks(t2.text));
}
////////////////////////////////////////////
//case 3
////////////////////////////////////////////
var hasilduplikasi:Duplikasi = new Duplikasi(duplikatTxt, inputkata, boxkata);
inputkata.border = true;
boxkata.border = true;
boxkata.text="";
duplikatTxt.buttonMode=true;
Penjelasan:
CASE 1
hasil adalah variabel yang menampung fungsi Penjumlahan pada class Penjumlahan.
parameter Penjumlahan adalah movieclip (utk diklik), input teks1, input teks2, dan dynamic text penampung hasil.
hanya itu yg perlu diperhatikan pada kode di file fla.
nama-nama variabel dalam "Penjumlahan.as" bersifat referensi yang dipakai untuk menjalankan fungsi dalam class.
namanya gw buat mirip kegunaannya dalam file fla. Misalnya wakilinput1 berarti input teks 1 di file fla (nama instancenya di fla "a1").
hasilakhir di Penjumlahan.as ada yg Number sebagai penampung hasil penjumlahan. Karena akan dikeluarkan dlm dynamic text maka dia harus bersifar string dan dinamakan hasilakhir_teks.
Sebagai newbie, hambatan awal gw adalah memahami bahwa objek di stage file fla mesti punya "jembatan" dengan variabel di class. Jadi harus melihat objek di stage diwakili variabel apa di class.
Karena class Penjumlahan sudah mempunyai fungsi kalkulasi, maka di file fla, utk mendapatkan hasil penghitungan, kita cukup menyatakan:
var hasil:Penjumlahan = new Penjumlahan(tambahAng, a1, a2, a3);
CASE 2
Kasus menggabungkan dua isi input text string ini melakukan fungsi penggabungan di file fla dengan menekan ENTER atau menekan tombol.
Cuma gw belum menemukan cara yang solid menggabung 2 tipe events (keyboardevent dan mouseevent) dalam 1 fungsi. Googling tidak ketemu.
Kalau ada master AS3 yang bersedia membantu, gw sangat berterima kasih...
Class Teks.as hanya menunjukkan class ini mempunyai referensi string pada fungsi "tambahteks".
Dengan memakai fungsi di dalam file fla bisa menunjukkan lebih jelas bagaimana hubungan variabel di fla dan class.
CASE 3
Ini mirip dengan case 1. Bedanya adalah pemakaian for loop untuk melakukan duplikasi input text.
Apa saja aset dalam file .fla?
input text, button +, dan dynamic text yang menampung hasil.
Untuk lebih jelasnya dan mencoba hasilnya, silakan lihat:
http://nayzuko.com/flashfiles/controlteks/
Ini hanya pemahaman gw sebagai newbie. Mohon para master AS3 mengoreksi jika ada yang salah atau metode kurang valid.
Sebagai catatan akhir, sebenarnya tidak ada masalah kalau mau memakai timeline coding seperti yang dibuat bebiflash. Timeline coding masih merupakan cara yang valid untuk AS3 yg sudah OOP sekalipun.
Memang ada banyak programer yang mencibir jika tidak memakai class dan code terpisah dari file fla. Bahkan ada yang melihat timeline coding sebagai cara "barbar" kurang elegan. Itu sah-sah saja.
Gw sendiri akan menghindari pemakaian class dan file .as jika bisa karena gw bukan programer dan bukankah Flash IDE (Flash CS3-CS5) masih ada untuk tujuan itu. Jika ingin tidak memakai timeline coding di fla, sebaiknya pakai Flex saja...
Bookmarks