Сделайте вызов функции JavaScript из Actionscript - PullRequest
1 голос
/ 23 октября 2009

Я пытаюсь вызвать функцию JavaScript из ActionScript.

На данный момент я использую ExternalInterface и могу добиться частичного успеха.

Я мог бы сделать вызов функции (без какого-либо разрешения области видимости), например «scanDNA ()», которая видна всем. Но я не могу сделать вызов функции (указан объем), как "Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA ()".

Пожалуйста, дайте мне знать, как мне этого добиться.

Спасибо и всего наилучшего,

SachinJadhav.

Ответы [ 3 ]

0 голосов
/ 05 ноября 2009

Я никогда не замечал никаких проблем с этим. Как настроена ваша структура Javascript?

Возможно, пропуск "()" в вызове ExternalInterface мог бы помочь ...

Если я делаю

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

и во вспышке (CS4)

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

Я получаю правильный результат.

0 голосов
/ 17 ноября 2009

Использование псевдопротокола javascript работает хорошо.

0 голосов
/ 23 октября 2009

Как насчет создания метода в JS для вызова функции?

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

И назовите это scanDNAinSomeScope, используя ExternalInterface.

UPDATE:

Да, в этом случае вам нужно создать функцию для каждой области. Но вы на самом деле создаете только те функции, которые вам нужно вызывать. Я полагаю, что было бы не так много случаев, когда вам нужно вызывать функции из других областей, отличных от Flash.

И есть обходной путь, использующий функцию JS, такую ​​как:

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

Это может быть дыра в безопасности. Но я не эксперт по безопасности, поэтому я не могу сказать, какая у него на самом деле проблема ... Я знаю только "eval is evil": P

...