Saya mungkin telah melangkah lebih jauh dari yang saya bisa karena saya baru belajar actionscript 3 hari yang lalu.

Saya membuat kuis sederhana dimana saya membuat pilihan jawaban secara manual, tidak menggunakan komponen yang disediakan oleh Adobe Animate. karena saya bisa mendekorasi penampilan sesuka saya.

Saya membuat tombol movieclip bernama answer1 dan answer2, lalu untuk memeriksa apakah jawabannya dipilih saya menambahkan boolean.

e.currentTarget.selected = true;
e.currentTarget.selected = false;

Ini kode saya untuk tombol jawab

function clicked(e:MouseEvent): void {
    if (e.currentTarget == answer1) {
        if (e.currentTarget.currentFrame == 1 ) {
        e.currentTarget.nextFrame(); // hover/active button
        e.currentTarget.selected = true;
        } else {
        e.currentTarget.prevFrame(); // hover/active button
        e.currentTarget.selected = false;
        }
        answer2.selected = false;
        answer2.prevFrame();
    } else if (e.currentTarget == answer2) {
        if (e.currentTarget.currentFrame == 1 ) {
        e.currentTarget.nextFrame(); // hover/active button
        e.currentTarget.selected = true;
        } else {
        e.currentTarget.prevFrame(); // hover/active button
        e.currentTarget.selected = false;
        }
        answer1.selected = false;
        answer1.prevFrame();
    }
}

Kemudian saya membuat tombol untuk memeriksa jawabannya. tapi sampai disini saya tidak tahu bagaimana cara mengecek objek yang sudah dipilih

function checkAnswer(e: MouseEvent): void {
trace(answer1.selected.name)
}

Saya hanya ingin bagaimana saya bisa mendapatkan nama instance dari objek boolean yang memiliki nilai true.

0
Ahlan 20 April 2021, 12:43

1 menjawab

Jawaban Terbaik

BTW, jika Anda ingin penyeleksi ini berfungsi sebagai radiogroup (sekelompok radiobutton yang memungkinkan hanya satu dari mereka dipilih sebagai waktu yang sama), Anda sebaiknya merancangnya seperti itu:

function clicked(e:MouseEvent): void
{
    // Define a radiogroup.
    var aGroup:Array = [answer1, answer2];
    
    // Iterate over the group elements and process the click.
    for each (var anAnswer:MovieClip in aGroup)
    {
        if (anAnswer == e.currentTarget)
        {
            anAnswer.selected = !anAnswer.selected;
        }
        else
        {
            anAnswer.selected = false;
        }
        
        // Adjust the current frame according to "selected" value.
        if (anAnswer.selected)
        {
            anAnswer.nextFrame();
        }
        else
        {
            anAnswer.prevFrame();
        }
    }
}

Mengapa? Pertama, masih lebih pendek dari milik Anda bahkan pada 2 opsi. Kedua, pikirkan untuk menambahkan lebih dari 2 opsi, seperti, 10 di antaranya? Kode saya hanya perlu memperluas Array opsi, Anda akan mendapatkan 5 kali lebih lama dari sekarang.

0
Organis 20 April 2021, 16:36