Pergunta

Eu estou tentando editar alguns flash para fazer uma chamada de função javascript externo, mas sem sucesso. Aqui está o meu código do ActionScript 2.0:

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

e aqui está o meu javascript;

function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

Eu vi muitos exemplos e estou principalmente confuso sobre o uso de ExternalInterface.addCallback. Eu não preciso o javascript para retornar nada para flash, então isso é necessário?

Por alguma razão, eu nunca vejo o alerta. Alguém vê qualquer problema no meu código? Existe alguma biblioteca ExternalInterface eu não tenho? Além disso, qual é a melhor maneira de usar ExternalInterface (ie; a verificação de erros, etc.) Agradecemos antecipadamente ...

Foi útil?

Solução

ExternalInterface.addCallback é para javascript para ser capaz de pôr em seu aplicativo Flash. Se por exemplo você quer um botão HTML que começa / pára um vídeo que você acabou de adicionar um retorno de chamada para um método chamado e seus js pode de chamar [FlashObject] .Callback nome do método.

Eu diria que a melhor maneira de adicionar métodos ExternalInterface em sua aplicação é a criação de uma classe responsável pela comunicação JS para cada caso interação no aplicativo. Por exemplo:

public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

Para ExternalInterface teste mais diretamente, tente chamar

ExternalInterface.call("alert", "Hello World!");

Outras dicas

Como outros disseram nos comentários para o cargo de Johan, você deve primeiro verificar se a interface externa está disponível, verificando ExternalInterface.available.

Fora isso ... como você iniciar o aplicativo Flex? Primeiro ele deve ser incluído em um invólucro que contém esse JavaScript é claro. Isso é trivial. No entanto no caso de você lançá-lo como um arquivo do sistema de arquivos local (navegador URL começa com file: //), então você também deve certificar-se de que o arquivo SWF tem as permissões necessárias para executar uma função JavaScript.

Você deve confiar o arquivo SWF para torná-lo capaz de acessar recursos locais como arquivos, ou JS em arquivos locais. Para isso crie um arquivo como myapp.cfg e adicionar o caminho para o arquivo como uma única linha para esta linha. Coloque esse arquivo na pasta FlashPlayerTrust. Em sistemas Linux isso é ~ / .macromedia / Flash_Player / # Segurança / FlashPlayerTrust /.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top