2009-10-23 71 views
1

我想從動作腳本調用JavaScript函數。從動作腳本調用JavaScript函數

截至目前,我正在使用'ExternalInterface'並可能取得部分成功。

我可以調用函數(沒有任何範圍分辨率),比如「scanDNA()」,它對所有人都是可見的。但我無法打電話給功能(範圍指定),如 「Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA()」。

請讓我知道,我該如何做到這一點。

感謝和問候,

SachinJadhav。

回答

0

如何在JS中創建一個方法來調用函數?

function scanDNAinSomeScope(){ 
    Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA(); 
} 

而且使用ExternalInterface稱之爲scanDNAinSomeScope

UPDATE:

是的,在這種情況下,你需要創建爲每個範圍功能。但是,你實際上只爲你需要調用的函數創建。我相信不會有太多情況需要從Flash的不同範圍調用函數。

而且有一種變通方法,使用像JS功能:

function evil(str){ 
    eval(str); 
} 

這可能是一個安全漏洞。但我不是安全專家,所以我不知道它實際上有什麼問題......我只知道「eval是邪惡的」:P

+0

我認爲這不是有用的... 我想要一種解決問題的方法...這是一種破解... – SachinJadhav 2009-10-24 05:48:10

+0

爲什麼你認爲這是一種破解?你需要什麼比這更多? – 2009-10-24 06:52:09

+0

你將不得不爲每個範圍創建這樣的功能,而不是確實很好 – skrat 2009-10-27 10:15:23

0

我從來沒有發現任何問題。你的javascript範圍結構如何設置?

也許離開了 「()」 中的ExternalInterface調用可以做的伎倆..

如果我做

var animals = {} 
animals.mammals = {} 
animals.mammals.test = function() { 
    return "whee"; 
} 

和閃光燈(CS4)

var x:String = ExternalInterface.call('animals.mammals.test'); 
trace(x); 

我得到正確的結果。

0

使用JavaScript僞協議工作良好。