Jump to content


Photo

Como Chamar Determinado Frame Do Flash Através Do Html


  • Faça o login para participar
6 replies to this topic

#1 julyrowvlock

julyrowvlock

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Feminino

Posted 16/09/2010, 16:51

Olá,

Preciso MUITO da ajuda de vocês para resolver esse problema já que não entendo muuito de AS... (só para constar, estou usando AS2)


Entaõ, tenho um swf que é a base do meu site, onde tem os botões e uma instância que carrega as demais páginas por loadMovie. Até aí tudo beleza. Eu preciso é poder acessar as páginas do swf separadamente pelo html. Tipo, atualmente quando eu mudo de página a URL continua a mesma coisa digitada, eu queria que, quando eu mudasse de página no flash, a URL mudasse também.

A situação que tenho atualmente é a seguinte:

HTML
<param name="FlashVars" value="&teste=oba2&" />

FLASH
var carrega:LoadVars = new LoadVars();
carrega.onLoad = function (success:Boolean){
	if(success){
		trace(carrega.teste);
		if (carrega.teste == "oba"){
			gotoAndPlay(35);
		}
	}else{
		trace("Falha ao carregar os dados");
	}
};
carrega.load('quemsomos.html');

com esse código eu consigo especificar que, ao entrar na pagina quemsomos.html o swf execute o loadMovie que está no frame 35. Mas, como serão várias páginas que chamarão o mesmo swf base só que em frames diferentes, eu não consigo pensar em como colocar isso no código, já que ele acaba sempre validando o primeiro item!!!


Espero ter sido clara!


Abraços

________________________________________________________________________________________________




Resolvi meu problema seguindo este tutorial: http://imasters.uol....ernalinterface/

caso o tuto saia do ar quando alguém for vê-lo, segue aí abaixo os códigos:


Usando a classe ExternalInterface

Muitas vezes precisamos que o Flash e o navegador se comuniquem, e, para isso, poderíamos usar JavaScript no navegador e o fscommand no Flash. Mas seria necessário colocar uma rotina especial em JavaScript e VBScript para realizar essa interação. Porém, isso não é mais necessário, pois agora podemos usar a classe ExternalInterface, que nos permite uma manipulação com o HTML ou um aplicativo desktop. Neste artigo, vamos usar essa classe para uma comunicação com o navegador através do JavaScript.

Verificando o navegador

Podemos dizer que a classe ExternalInterface não está embutida no Flash, como, por exemplo, a classe MovieClip; por essa razão, é necessário importá-la antes de usar. Então, colocamos uma caixa de texto dinâmica no palco e a instanciamos como “mensagem_txt”. Em seguida, colocamos esse script no frame:

// Importando o pacote external.
import flash.external.*;
// Exibimos na caixa de texto se o navegador tem ou não acesso a esse recurso.
mensagem_txt.text = ExternalInterface.available;

Salve o arquivo. Agora geramos o swf e o HTML; vamos abrir no navegador e pronto: saberemos se o navegador tem acesso a esse recurso ou se precisaremos atualizá-lo. Isso não significa que irá funcionar testando em nossas máquinas, e sim na web. Para que funcione em navegação local, precisamos dar permissão especial para isso e, para dar esse acesso, damos um clique com o botão direito do mouse sobre o swf no navegador e vamos em “Settings...”. Em seguida, clicamos em “Advanced...” e, por fim, em “Global Security Settings Painel”. Depois disso, pode demorar um pouco para carregar a página.

Por fim, veremos uma tela como esta acima, em que poderemos escolher uma lista de arquivos ou diretórios em nossa máquina, onde podemos dar as permissões. Mas isso não é necessário, a não ser que queiramos que um aplicativo tenha esse acesso em nosso computador. Já para a web, isso não é necessário, isto é, uma vez acessado de um servidor na internet, e não diretamente de nossos computadores, esse procedimento não é necessário. Agora, fazer isso não significa que demos permissão para funcionar em qualquer lugar, e sim apenas em nossos computadores; cada usuário que utilizar o arquivo teria de dar essa mesma permissão. Por essa razão, não acredito que seja realmente necessário, já que nesse caso queremos que funcione na web, e não por um diretório local.

Flash executando métodos no JavaScript

Agora que já sabemos como verificar se o usuário pode ou não usar esse recurso, faremos com que o Flash envie dados para o JavaScript e receba um retorno. Veja o exemplo abaixo: digite um texto e clique em enviar.

Para obtermos esse resultado, primeiro vamos colocar o script a seguir no frame, e também colocaremos no palco uma caixa de entrada instanciada como "mensagem_txt" e um botão instanciado como "enviar_btn":

// Importando pacote external.
import flash.external.*;
// Vamos usar o método onRelease, que é executado depois de o botão ser pressionado.
enviar_btn.onRelease = function() {
// No método call() definimos o método JavaScript a ser executado e o valor a ser enviado (nesse caso, o valor da caixa de texto). O método call() retorna o valor retornado pelo método JavaScript, o qual estamos exibindo direto na caixa de texto.
mensagem_txt.text = String(ExternalInterface.call("FlashJavaScript", mensagem_txt.text));
// FlashJavaScript é o nome do método JavaScript a ser executado no navegador.
}

Depois de gerar o HTML e o swf, vamos abrir o código fonte do HTML e acrescentar o seguinte método JavaScript:

<!-- Abaixo das tags do Flash, colocamos o botão e o JavaScript. -->
<script language="javascript">
// Método a ser executado pelo Flash.
function FlashJavaScript($parametro){
// Apenas para ficar mais interativo, vamos usar o "confirm" para exibir a variável enviada e verificar se o usuário quer ou não enviar uma variável para o Flash.
if(confirm("Você enviou: " + $parametro + "\n Deseja enviar algo para o Flash?")){
// Se sim, usamos a janela de "prompt" para digitar o valor a ser retornado para o Flash.
var $pronpt = prompt("Retornando dados para o Flash:","digite seu texto aqui");
// Se o prompt tiver algum valor, colocar na variável a ser enviada.
if($pronpt) $parametro = $pronpt;
}
// Retornando um valor para o Flash.
return $parametro;
}
</script>

Tendo colocado o script, é só executar e ver a interação em ação. Agora não são mais necessários scripts intermediários como em VBScript para a comunicação, deixando esse tipo de recurso mais prático e fácil de manipular.

Não podemos deixar de notar que em navegadores como Opera e Firefox (no Internet Explorer isso não ocorre), quando executamos esse exemplo, o tempo de resposta ao se digitar algo na caixa de texto no Flash se perde um pouco, as alterações não aparecem a não ser que passemos o mouse sobre o botão no Flash ou cliquemos no swf, por exemplo. Isso ocorre porque usamos o pronpt e o alert no JavaScript. Se utilizarmos outro meio que não o prompt para definirmos um valor a retornar para o Flash e deixarmos as mensagens para serem exibidas pelo Flash, podemos evitar esse problema.

JavaScript executando métodos no Flash

Continuando, vejamos agora como fazer para que o JavaScript execute um método feito no Flash. Veja no exemplo abaixo que, ao clicar no botão que está no HTML, aparecerá um prompt para definirmos o intervalo de tempo que o círculo vai demorar para se mover. Em seguida, ele executará a função dentro do Flash para fazer o movimento no intervalo de tempo especificado.


Para reproduzir esse exemplo, vamos criar um círculo, transformá-lo em um MovieClip e instanciá-lo como “circulo_mc”. Depois, dentro desse MovieClip, colocamos uma caixa de texto de entrada; por fim, no frame em que se encontra o MovieClip, colocamos este script:

// Importando pacote external.
import flash.external.*;

// Método a ser executado pelo JavaScript.
var MetodoFlash:Function = function($intervalo:String){
// Parar a execução do método, mover caso esteja sendo executado.
clearInterval(verificando);
// Certificando-se de que o intervalo terá um valor numérico
if(isNaN($intervalo) || $intervalo < 1) $intervalo = "1";
// Exibindo valor retornado.
mensagem = $intervalo;
// Executando o método de movimento no intervalo de tempo especificado.
verificando = setInterval(mover,Number($intervalo));
}

// Defina o nome do método JavaScript, que será o equivalente ao do método a ser executado no Flash. Esse nome é o método de acesso JavaScript; não é preciso ter o mesmo nome do método no Flash.
var nomeMetodo:String = "MetodoJavascript";
// Aqui podemos definir o objeto do método, mas neste caso não será necessário.
var instancia:Object = null;
// Nome real do método no Flash a ser executado; ele não deve ficar entre aspas, associando assim o método em si.
var metodo:Function = MetodoFlash;
// O método addCallback retornará true em caso de sucesso ou false em caso de erro, e esse valor colocamos na variável "finalizado".
var finalizado:Boolean = ExternalInterface.addCallback(nomeMetodo, instancia, metodo);
// Associamos uma caixa de texto à variável "mensagem". Essa variável foi associada à caixa de texto que está dentro do MovieClip "circulo_mc". Vamos, então, exibir se tivermos sucesso em fazer essa interação Flash JavaScript.
mensagem = finalizado.toString();

// Método que movimenta o circulo_mc cada vez que é executado.
var mover:Function = function() {
// Coordenada inicial do circulo_mc no palco em relação à posição x.
var pontoInicial:Number = 45;
// Coordenada final do circulo_mc no palco também em relação à posição x.
var pontoFinal:Number = 470;
// O objetivo dessas duas variáveis é determinar o máximo que a imagem poderá se mover tanto para a esquerda quanto para a direita.
// Quantidade de pixels a se deslocar a cada execução.
var velocidade:Number = 10;
// Movendo o circulo_mc.
circulo_mc._x += velocidade;
// Caso ela passe da coordenada final...
if(circulo_mc._x > pontoFinal){
// Mover para a coordenada inicial.
circulo_mc._x = pontoInicial;
mensagem = ""; // esvaziar a variável.
// Parar de executar esse método.
clearInterval(verificando);
}
}

Estamos prontos, então, para gerar o HTML e o swf. Feito isso, vamos abrir o código HTML e colocar o script a seguir abaixo do objeto Flash:

<!-- Abaixo das tags do Flash, colocamos o formulário, botão e o JavaScript. -->
<form>
<label>
<!-- Defina para que o botão execute o método JavaScript, que executará o método associado ao Flash. -->
<input type="button" name="executar" onMouseUp="Executar();" value="executar">
</label>
</form>
<script language="javascript">
// Esse método serve apenas para colocarmos a sintex correta para acessar o objeto Flash.
function verificarNavegador($id) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[$id];
} else {
return document[$id];
}
}
// Esse é o método executado pelo botão.
function Executar(){
// Aqui abrimos o prompt para definir a velocidade do circulo_mc.
var $velocidade = prompt("Defina a velocidade do circulo_mc:","5");
// Por fim, executamos o método que irá executar outro método dentro do Flash e lhe enviamos um valor.
verificarNavegador("javascript_flash").MetodoJavascript($velocidade);
}
</script>

Pronto, agora é só abrir o HTML e ver a interação em ação. São recursos muito úteis, principalmente para manipular janelas, o banner e a interface, quando usamos o Flash para fazer menus, interagir com editores de HTML, entre outras inúmeras aplicações.

Edição feita por: julyrowvlock, 16/09/2010, 16:52.


#2 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 18/09/2017, 09:50

Amoxil Marque Acheter generic cialis Cialis Si Puo Comprare Senza Ricetta
Propecia Saw Palmetto Serenoa Repens Viagra In Holland Legal Kaufen Online Pharmacy Beta Blocker
Is Buying Vigira On Line Safe cialis Generic Cialis Fedex

#3 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 05/10/2017, 23:57

Azithromycin Vs Amoxicillin Chlamidia Does Amoxicillin Cause Increase Thirts viagra Philippine Pharmacy Online

#4 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 22/10/2017, 06:57

Levitra Bustine Order Discount Clobetasol Cephalexin Result osu levitra comprar Propecia Rogaine Female Hair Loss Cialis 5mg Generique
Isotretinoin worldwide price amex accepted online Vente Viagra Generique Donde Se Puede Comprar Viagra viagra Amoxicillin Safe For Pregnancy Best Online Viagra Site

#5 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 03/11/2017, 03:11

Levitra Dosage Onlinepharmacy.Vom Kamagra Buy With Paypal viagra Prezzo Cialis One Day Propecia Precio Biologia

#6 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 03/11/2017, 06:26

Generic Propecia 20mg Propecia Nistagmo buy viagra Legally Isotretinoin Amex Accepted
Pay For Cialis With Paypal viagra prescription Wirkung Viagra Video El Cialis Generico

#7 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 25/11/2017, 09:06

Flucoanazole For Ear Infestations Levitra Gebraucht Buy Cialis 40 Mg In Toronto levitra 10mg Generique Baclofen Dove Comprare Viagra Senza Ricetta
Amoxicilline Levitra Online Forum Kamagra Oral Jelly Canada buy viagra online Rhine Inc India Viagra Kaufen Ohne
Buy Dutasteride Uk Cialis Dove Comprare Online viagra Cialis Precio Farmacia Madrid Viagra Brevetto Scaduto




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq