1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Flash: sobreposição de swf (evitar links)

Discussão em 'Web Development' iniciada por pedroac, 20 de Setembro de 2007. (Respostas: 7; Visualizações: 1757)

  1. Um colega que é designer tem um problema com actionscript 2. Ele importou ficheiros swf noutro. O problema é que eles têm links, e quando estão sobrepostos, o cursor do apontador (rato) continua a ficar em forma de mão quando passa por cima de links que não se vêem, que estão debaixo de outro swf.

    O meu colega disse hoje (pelo msn):
    "o swf que esta por baixo os links devem estar desactivados"
    "o menu inicial onde tem os links, quando licas num link desses abre um swf por cima do menu inicial , mas se andares com o rato por cima desse novo swf que abriu sobre o outro, os links que estao por baixo continuam activos"

    Como é possível desactivar os links que estão sobrepostos por um swf?

    Cumprimentos,
    Pedro Amaral Couto
     
  2. msdevweb

    msdevweb Power Member

    Basta colocares link_button._visible=false; nas actions onde carregas o teu swf externo.

    cumps.
     
  3. Obrigado. :-)
    Este código funcionou:
    mas o meu colega ainda pediu-me:
    Em "cont.swf" tentou-se algo como:
    mas diz que não dá. O link deixa de dar...
     
  4. Encontrei a referência de Actionscript, e vi isto:
    http://www.brajeshwar.com/reference/as2/Button.html
    Se o meu colega conseguir resolver o problema dele, coloco a solução no tópico.

    Cumps
    };
     
  5. msdevweb

    msdevweb Power Member

    Para activares o botao de novo, ou para o mostrares fazes o mesmo:

    link1._visible=true;
    mas aqui tens que ter atençao, nao funciona no cont.swf, porque o link1 nao esta dentro do cont.swf teras que referir o sitio onde ele esta. se estiver no stage principal, algo como _root.link1._visible=true; Se estiver no stage principal, mas dentro de um mc, de menus por exemplo. Algo como _root.mc_butoes.link1.visible=true; Nao sei se estas a perceber, o link1.visible, so funciona no proprio container onde ele esta, se o botao esta em outro container/movieclip, para desactivares algo de outro container/movieclip tens que indicar sempre qual o ome_do_container.objecto_a_modificar._propriedade, mas atençao, se o teu cont.swf for um swf externo, e nao "linkado/importado" para/da libraria, qualquer instruçao que venha desse cont.swf referente ao flash onde a carregaste, dificilmente funcionara, ja que sao 2 swf's diferentes.


    p.s. o on(release) so deve ser usado em botoes, logo no cont.swf nao funcionarà, tenta colocar a instruçao para mostrares os botoes de novo na altura em que fazes o unload ao movie cont.swf. Deveras ter um botao para isso certo? ou o cont.swf esta sempre a correr?

    Bem, caso faças o unload do movie, perto de alguma istruçao como minha_zona_de_carregar_movies_mc.unloadMovie();
    e logo a seguir o teu *link._visiblue=true;

    deve funcionar :)

    * - Nota que teras que ver a localizaçao do teu link. Se usares o metodo que te dei em cima, a seguir ao unloadMovie, nao deves precisar de mais nada, so link1._visible=true;


    Cumps.
     
    Última edição: 21 de Setembro de 2007
  6. Sou programador, mas nunca usei Actionscript...
    o meu colega emprestou-me um Flash, e fiz umas experiências. Mas antes ele explicou-me que antes de usar o Actionscript tinha de converter as formas em botões (Modify > Convert to symbol). É tão simples... lol

    No botão (link) do swf principal:
    No botão de "cont.swf":
    O _invisible faz desaparecer a imagem... o enabled desactiva o link. :-)
    Não sei por que não dá para fazer:
    (será que o "release" termina antes de _level1 ficar descarregado?)
    De qualquer modo está a funcionar.

    Obrigado pela ajuda, e espero que isso possa ajudar outros.

    Cumps,
    Pedro Amaral Couto
     
  7. msdevweb

    msdevweb Power Member

    Mas estas a usar esse on (release) onde??? é num botao certo? Mas ao definires a instruçao do onUnload no botao ele so vai correr isso durante o tempo que estiveres a carregar no botao. o que eu te aconselho, mesmo ja tendo tu exemplificados com carregamentos de filmes para levels, é carregares o movieclip para um outro vazio.

    Algo como.

    Na stage principla crias uma area para carregar o cont.swf, converte-a para movieclip e das-lhe o nome por exemplo loader_mc

    no botao que chama o cont.swf so carregas o files.:
    on(release)
    {
    loader_mc.loadMovie("cont.swf");
    link.enabled = false;
    }

    Agora, tens duas opçoes. Crias um layer na timeline do stage e das-lhe a mesma duraçao em frames que o teus outros layers. carregas F9 em actions e escreves a instruçao que tens em cima.

    loader_mc.onUnload= function() {
    link.enable=true;
    }

    podes optar por colocar o mesmo evento, dentro do loader_mc, no layer 1, frame 1, mas ai teras que referenciar o main stage como destinatario e como estas dentro do loader_mc, seria algo como
    this.onUnload=function() {
    _root.link.enable=true;
    }
    //Nao estou certo se esta ultima hipotese funcionarà, mas esperimenta. Pelo menos a primeira deve funcionar.

    cumps.
     
  8. Era o que estava a pensar.
    Queria colocar o onLoad fora do on(release), mas não tinha pensado no ActionScript da timeline. De qualquer modo, está resolvido.

    Cumps
     

Partilhar esta Página