Di kelas ActionScript3 saya, bisakah saya memiliki properti dengan pengambil dan penyetel?
Di kelas ActionScript3 saya, bisakah saya memiliki properti dengan pengambil dan penyetel?
Jawaban (3)
Oke, Anda cukup menggunakan sintaks pengambil/penyetel dasar untuk properti apa pun di kelas AS3 Anda. Misalnya
package {
public class PropEG {
private var _prop:String;
public function get prop():String {
return _prop;
}
public function set prop(value:String):void {
_prop = value;
}
}
}
Ya, Anda dapat membuat fungsi pengambil dan penyetel di dalam kelas AS3.
Contoh:
private var _foo:String = "";
public function get foo():String{
return _foo;
}
public function set foo(value:String):void {
_foo= value;
}
informasi lebih lanjut tentang pengambil dan penyetel dapat ditemukan di sini
Pengambil adalah fungsi dengan nilai kembalian bergantung pada apa yang kita kembalikan. Penyetel selalu memiliki satu parameter, karena kita memberikan nilai baru pada variabel melalui parameter tersebut.
Pertama-tama kita membuat sebuah instance dari kelas yang berisi pengambil dan penyetel, dalam kasus kita ini adalah "a". Kemudian kita memanggil setter, jika kita ingin mengubah variabel dan menggunakan sintaks titik kita memanggil fungsi setter dan dengan operator = kita mengisi parameternya. Untuk mengambil nilai suatu variabel, kita menggunakan pengambil dengan cara yang sama seperti yang ditunjukkan pada contoh (a.myVar). Berbeda dengan pemanggilan fungsi biasa, kami menghilangkan tanda kurung. Jangan lupa untuk menambahkan tipe pengembalian, jika tidak maka akan terjadi kesalahan.
kemasan {
import flash.display.Sprite;
import flash.text.TextField;
public class App extends Sprite
{
private var tsecField:TextField;
private var tField:TextField;
public function App()
{
myTest();
}
private function myTest():void
{
var a:Testvar = new Testvar();
tField = new TextField();
tField.autoSize = "left";
tField.background = true;
tField.border = true;
a.mynewVar = "This is the new var.";
tField.text = "Test is: "+a.myVar;
addChild(tField);
}
}
}
impor flash.display.Sprite;
impor flash.text.TextField;
kelas Testvar memperluas Sprite { public var test:String;
public function Testvar()
{
}
public function set mynewVar(newTest:String):void
{
test = newTest;
}
public function get myVar():String
{
return test;
}
}