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

random em actionscript

Discussão em 'Web Development' iniciada por fil79, 31 de Janeiro de 2007. (Respostas: 11; Visualizações: 1586)

  1. fil79

    fil79 Power Member

    existe alguma função em actionscript randômica...tenho 10 MC pequenos e gostaria que estes aparecessem e desaparecessem aleatoriamente..existe alguma forma??
     
  2. OldMan

    OldMan Power Member

    e' precisamente a funcao random();
    nao tenho a certeza se comeca no 0 ou no 1, mas podes pesquisar/testar isso.
    dentro dos () poes o maior numero que podes ter
     
  3. fil79

    fil79 Power Member

    pois o problema vai ser aplicá-la para este caso especifico


    criei um array:

    var mcs:Array = new Array("instancia1", "instancia2", "instancia3.........);

    var numero = random(mcs.length); //aqui vê o tamanho do array e sorteia um número

    trace(mcs[numero]); //aqui retorna um item do array


    mas está a acontecer o seguinte problema: a minha animação fica activa quando rato passa por cima dela...ao passar activa o som mas aparece uma mensagem Output a dizer p3...p3 é uns dos meus mc portanto está a fazer o random mas este não está a aparecer no stage mas sim numa mensagem de output
     
  4. OldMan

    OldMan Power Member

    essa mensagem de output creio que seja por causa do trace.
    tenta comentar essa linha e ve se continua a aparecer

    eu lembrome de tentar fazer uma coisa do genero ha uns meses atras e nao consegui porque simplesmente nao conseguia concatenar uma variavel a uma instrucao tipo isto:

    Código:
    num=random(5);
    _root.mc +num+ .gotoAndPlay(2); //isto se os movie clips se chamassem mc1, mc2, mc3...
    
    simplesmente dava um erro e nao fazia o que eu queria.

    no meu caso como eram apenas 5 resultados possiveis resolvi com uns IFs.

    (ja nao tenho a certeza da syntax, e' so para perceberes)
    Código:
    if (num==1) {
    _root.mc1.gotoAndPlay(2);
    }
    if (num==2) {
    _root.mc2.gotoAndPlay(2);
    }
    if (num==3) {
    _root.mc3.gotoAndPlay(2);
    }
    
    mais uma vez, no meu caso isto resolvia, mas se tivesse 100 movies tinha que arranjar outra maneira qualquer de fazer a mesma coisa... btw, estava a usar o flash MX, nao sei se no 8 ja se consegue fazer aquilo que tinha mais acima.


    PS. usa as tags do CODE que so ajudam para quem ve ;)
     
  5. kidloco

    kidloco Power Member

    A forma correcta é:
    PHP:
    var randomNum:Number Math.floor(Math.random() * (max min 1)) + min;
    Se quisessem um random de 0 a 100, fariam:
    PHP:
    var randomNum:Number Math.floor(Math.random() * (1001)) + 0
    OldMan, no teu caso terias que fazer algo tipo:
    PHP:
    var randomNum:Number Math.floor(Math.random() * (511)) + 1;
    _root["mc"+randomNum].gotoAndPlay(2)
     
  6. SpeedDragon

    SpeedDragon Power Member

    Não tenho acerteza, mas podem usar o eval();

    _root.eval("mc"+random()).gotoAndPlay(2);

    Acho qeu é assim, já não uso á algum tempo ;)
     
  7. OldMan

    OldMan Power Member

    ;)
     
  8. fil79

    fil79 Power Member

    obrigado pessoal..já está resolvido..entretanto surgui-me outra duvida

    quero que o rato ao passar por cima de um bt invisivel vá para um determinado frame e fique durante 6 segundos:

    agora falta a função que determine o tempo e retome após esse tempo para o frame 1
    julgo que existe uma função set interval mas não a si aplicar..
     
  9. kidloco

    kidloco Power Member

    O eval já não se deve usar, pois vai "desaparecer" brevemente.

    Quanto ao setInterval é fácil... basicamente aquilo chama uma função ao fim de x milésimas de segundo. Mas o código que tens aí está mal, visto que um botão "não" tem frames. Queres que ao clickar no botão um movieclip vá pro frame2 e fique lá 6 segundos é isso ?
     
    Última edição: 1 de Fevereiro de 2007
  10. OldMan

    OldMan Power Member

    a funcao nao conheco, a maneira mais facil e' veres a quantas fps estas a trabalhar e multiplicares esse valor por 6. o resultado e' o numero de frames que vais precisar de ter depois da tal frame que queres que ele salte ao passar o rato por cima do botao
     
  11. kidloco

    kidloco Power Member

    Isso não funciona pois a velocidade do filme está dependente do processador que tens (sim o flash é dependente do processador). Um filme de flash com 60frames (a 60fps vamos imaginar, o que dá 1 segundo) vai ser mais lento num Pentium1 que num Pentium4... por isso o mais seguro é por código.

    Vou partir do principio que quando passam por cima do botão "btTeste" querem ir para o frame2 do movieclip "mcTeste", ficar lá 6 segundos e depois voltar para o frame1 desse mesmo movieclip:
    PHP:
    // no botão 
    on (rollOver) {
        
    mcTeste.gotoAndStop(2);
        
    interval(6);
    }

    // na timeline
    function go() {
        
    mcTeste.gotoAndStop(1);
        
    clearInterval(tempInterval)
    }
    function 
    interval(time:Number) {
        
    tempInterval setInterval(this"go"time*1000);
    }
     
    Última edição: 1 de Fevereiro de 2007
  12. fil79

    fil79 Power Member

    sim parece.me que é isso...já agora peço a opinião....a ideia é criar um album de fotos para a web, fotos em formato pequeno, ao passar o rato estas aumentam(vai para um frame com a foto aumentada) durante esse periodo de tempo..será esta a melhor maneira para fazer isto....e a usar este sistema tenho que criar um bt invisivel para cada foto certo?
     

Partilhar esta Página