Pergunta

Dado o seguinte método de inflamação:

function sendToJava(name:String, ... args)
{
  ExternalInterface.call("sendCommand", name, args);
}

Como posso garantir que ExternalInterface.call () interpreta argumentos em sua forma expandida? Agora, se eu passar uma lista em "argumentos", essa lista é interpretado como um único argumento do tipo "Object []" por ExternalInterface.call (). Quando os argumentos chegar Java, eu não tenho nenhuma maneira de diferenciar entre vários argumentos separados por vírgulas contra um único argumento contendo vírgulas como parte de seu valor.

Foi útil?

Solução

Um pequeno erro de digitação. Ele deve ser:

function sendToJava(name:String, ... args)
{
  // See Array.unshift()
  args.unshift("sendCommand", name);

  // See Function.apply()
  ExternalInterface.call.apply(null, args);
}

Apenas mudança "array" de "aplicar"

De qualquer forma, graças a tonelada para postar isso. Você é um salva-vidas!

Outras dicas

Eu encontrei uma resposta sobre IRC:)

function sendToJava(name:String, ... args)
{
  // See Array.unshift()
  args.unshift("sendCommand", name);

  // See Function.apply()
  ExternalInterface.call.array(null, args);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top