JavaScript adalah interaksi dengan ActionScript 3,0 oleh flash.external.ExternalInterface kelas ini, tapi dengan Flash 8 dan ActionScript 2.0 dalam interaksi dengan penggunaan flash.external.ExternalInterface atau berbeda. Perbedaan terbesar adalah ExternalInterface.addCallback metode di ActionScript 3.0, hanya dua parameter, sementara tidak ada contoh yang lebih dari parameter ini. Masalah-masalah yang akan dibahas di bawah ini di Flash 9 ActionScript 3.0 pada itu.
Pertama adalah masalah yang paling umum, yaitu panggilan Flash ActionScript JavaScript metode dalam laporan bahwa metode itu tidak ada. Masalahnya adalah dengan Flash dalam pelaksanaan ExternalInterface.addCallback waktu yang berhubungan, harus ExternalInterface.addCallback penuh dalam HTML setelah acara window.onload adalah implementasi sebelum mereka dapat dilaksanakan, jika tidak, itu tidak bisa dilepaskan dalam metode JavaScript panggilan.
Untuk mengatasi masalah ini ActionScript 3.0 pada Flash 9 untuk membantu dalam contoh, yang berisi solusi, yang pertama kali di js dua tanda, seperti jsReady dan swfReady kedua variabel sebagai simbol, ditetapkan untuk memulai palsu , ketika window.onload, set jsReady true, Flash, JavaScript di awal tanda cek apakah benar jsReady (dengan pemanggilan metode ExternalInterface.call JavaScript dalam fungsi untuk kembali bendera), jika tidak benar, untuk mengatur timer, setelah jangka waktu tertentu (misalnya 50 atau 100 milidetik) untuk mengulang memeriksa ini flag ini, setelah benar, pelaksanaan ActionScript untuk memberikan ExternalInterface.addCallback untuk mempublikasikan panggilan ke fungsi JavaScript atau metode, pelaksanaan semua selesai ExternalInterface.addCallback setelah pemanggilan metode dengan ExternalInterface.call dalam sebuah fungsi JavaScript untuk menetapkan bendera swfReady ditetapkan swfReady sebagai benar. Kemudian, bila JavaScript terdeteksi swfReady benar, maka panggilan metode dalam ActionScript tidak akan menemukan bahwa dalam masalah ini.
Jika Anda menghubungi hal yang sederhana bisa, jadi jika ada panggilan yang relatif banyak masalah. Aku adalah melalui pembentukan dua antrian eksekusi: jsTaskQueue dan swfTaskQueue, seperti sebelumnya dalam jsReady benar, jika operasi untuk memohon ActionScript, menempatkan operasi ini ke jsTaskQueue, ketika js di window.onload set jsReady lakukan saat Tugas antrian untuk mengambil pelaksanaan, ketika jsReady berlaku sebagai benar setelah swfReady sebelumnya, jika operasi untuk memohon ActionScript, menempatkan operasi ini ke swfTaskQueue, ketika ActionScript JavaScript dengan tanda panggilan metode ExternalInterface.call dalam pengaturan swfReady Fungsi set swfReady benar, untuk mengambil tugas ini dalam antrian untuk eksekusi. Ketika jsReady dan swfReady adalah benar, maka jika operasi untuk memohon ActionScript langsung berjalan di atasnya. Dengan ini berarti paket tugas-tugas ini, penggunaan paket ini setelah operasi, dalam penyusunan kode tersebut secara berurutan (tidak serempak) untuk menulis, dan eksekusi adalah urutan pelaksanaan Hak Asasi.
Selain masalah yang paling sering ditemui, ada dua pada masalah IE.
Jika Anda secara dinamis dibuat dengan JavaScript dan tag Flash dimasukkan ke dalam html kata-kata (misalnya, dengan memberikan metode innerHTML atau metode appendChild), adalah mungkin bahwa Anda dalam operasi ini dilakukan setelah window.onload itu, dalam hal ini, lainnya interaksi normal browser JavaScript dan ActionScript 3.0, IE tidak bisa. Oleh karena itu, untuk asuransi, cara terbaik adalah dengan langsung menulis html tag berkedip di html dalam tubuh, atau menggunakan document.write JavaScript untuk menulis html tubuh di bagian belakang dari pendekatan ini adalah lebih tepat untuk IE, karena dalam kasus itu, jangan klik Anda dapat mengaktifkan Flash.
Masalah lainnya adalah, jangan mempublikasikan nama memanggil metode ActionScript, atau di IE,, JavaScript kesalahan saat memanggil metode ini.
Pertanyaan terakhir, online lebih lanjut dapat ditemukan, dan tidak berkedip ke dalam formulir, itu akan berada di dalam IE, error JavaScript saat disebut ActionScript. Tentu saja, Internet juga telah memberikan script untuk memecahkan masalah ini, tapi itu tampaknya adalah ActionScript 2.0 untuk Flash 8, saya belum mencoba, tidak tahu 3.0 adalah sama efektifnya.
Jika Anda menelepon dalam ActionScript JavaScript melalui ExternalInterface.call, jika melewati parameter string, jadi jika string berisi simbol, maka panggilan tersebut akan gagal. Ini merupakan ActionScript interaktif dan bug JavaScript, solusinya adalah, tentang pengalihan string untuk tentang kesepakatan pertama dalam transmisi, perawatan sangat sederhana untuk mentransfer data seperti data, ia akan menjadi data.replace (/ \ / "\ \" diganti) kemudian, diteruskan ke JavaScript di atasnya.