24 Kasım 2009 Salı

HTML ve Flash Arasında Veri Alışverişi (ExternalInterface)

HTML ve Flash dosyaları arasında veri transferini sağlamak için Adobe ExternalInterface adında bir uygulama geliştirmiş. Bu uygulama lokal bir bilgisayarda test edildiği zaman güvenlik açığı oluşturabilmesi sebebiyle web sitesinde bu uygulamanın bir test sunucusunda çalıştırılmasını öneriyor. Zaten Adobe bu durumu engelleyici adımları gerçekleştirmiş ve kullanıcıya gerekli uyarıları yapıyor.
Örneğimize gelince, yeni bir flash dosyası içerisine iki ayrı textbox ve bir de buton yerleştirdikten sonra bu dosyayı ExternalInterfaceExample.fla adı ile kayıt ediyoruz. Daha sonra bu nesnelere sırası ile sending_ti, received_ti ve send_button isimlerini veriyoruz. Flash dosyamızın ilk frame'inde yazılması gereken kod ise şu şekilde.
import flash.external.ExternalInterface;

function getTextFromJavaScript(str:String):Void
{
received_ti.text = "" + str;
}

ExternalInterface.addCallback("sendTextToFlash", this, getTextFromJavaScript);

function clickSend(eventObj:Object):Void
{
var jsArgument:String = sending_ti.text;
var result:Object = ExternalInterface.call("getTextFromFlash", jsArgument);
received_ti.text = "Returned: " + result;
}

send_button.addEventListener("click", clickSend);

Örneğimizin HTML tarafındaki kodu ise aşağıdaki gibi.

<script > function getFlashMovie(movieName) { var isIE = navigator.appName.indexOf("Microsoft") != -1; return (isIE) ? window[movieName] : document[movieName]; } function formSend() { var text = document.htmlForm.sendField.value; getFlashMovie("ExternalInterfaceExample").sendTextToFlash(text); } function getTextFromFlash(str) { document.htmlForm.receivedField.value = "From Flash: " + str; return str + " received"; } </script>

<form name="htmlForm" method="POST" action="javascript:formSend();"> Sending to ActionScript:<br /> <input type="text" name="sendField" value="" /><br /> <input type="submit" value="Send" /><br /> <br /> Received from ActionScript:<br /> <input type="text" name="receivedField"> </form>

Kodları kopyalayıp HTML dosyası içerisine yapıştırdıktan sonra kaydettiğimiz dosyayı çalıştırıyoruz. Daha önce belirttiğim gibi güvenlik uyarısı ile karşılaşacaksınız. Bu uyarıyı önemseyerek Settings tuşuna basarak bir istisna oluşturmalısınız. En sonunda sağlıklı bir şekilde dosyanızı yeniden çalıştırın ve göreceksiniz, formdan gönderilen veriler Flash dosyası içerisinde görüntüleniyor.
Bu örnek kodu ADV Manager Editör panelinde kullanmamız söz konusu olacaktır.

0 yorum:

Yorum Gönderme