|- Ari Zanuto Júnior
    |- João Neto
    |- CFUG-SP
    |- CFGIGOLÔ
    |- Blog do Rafa
    |- Neto Leal
    |- Celina Uemura
    |- Frederick Van Amstel
    |- Fabiano Cruz
    |- Gabriel Laet
    |- Jonas Galvez - Blog
    |- Ricardo Braz - Blog
    |- Carol Antunes
    |- Dauton Janota
    |- Jonathas Scott
    |- FlashMasters
    |- Igor Costa
    |- Hipermasters
    |- MUGB
    |- TrixHost

[Valid RSS]
sizeMouse() em AS1 e AS2
Posted by Marlos Carmo 2003-11-04 15:50:45

Este código é bem legal e é bem parecido com o alphaMouse(), só que em vez de o MovieClip ir sumindo ou aparecendo, ele aumenta e diminui.

Veja o exemplo no link abaixo:

http://www.marloscarmo.com/as/menu_ampliando.swf

A grande novidade é que agora os código que postarei no site terão duas versões, uma versão em Action Script 1.0 e Action Script 2.0.

Na primeira estou utilizando o prototype, que é um "comando" para criar um método em uma classe pré-existente, mas o prototype não funciona na versão 2.0, pois o AS2 não é mais prototype-based e sim class-based.

Codigo em AS1:

//-------------------------------------------------------
//
// sizeMouse(tf, r, o, d)
// tf = { tamanho máximo do MovieClip };
// r  = { raio da área de atuação do mouse };
// o  = { ordem da função:
//        0 para crescente

//        1 para decrescente
//      };
// d  = { referência do raio:
//        "x" para somente referenciar pela coordenada X
//        "y" para somente referenciar pela coordenada Y
//        "xy" para referenciar pela coordenada X e Y
//      };
//
//-------------------------------------------------------


MovieClip
.prototype.sizeMouse = function(tf,r,o,d) {
    w=this._width;
    h=this._height;
    this.onEnterFrame = function() {
        distX=int(_root._xmouse-this._x);
        distY=int(_root._ymouse-this._y);
        if(d=="x")rd=distX;
        if(d=="y")rd=distY;
        if(d=="xy" or d=="")rd=int(Math.sqrt((distX*distX)+(distY*distY)));
        t=((100*rd)/r)/100;
        if(t>1)t=1;
        if(o==0)t=1-t;
        this._width=w+w*t*tf;
        this._height=h+h*t*tf;
    }
}

mc.sizeMouse(2,200,0,"xy");



Pelo fato de o novo AS2 não ser mais prototype-based, ele não pode criar métodos em classes pré existentes, para isso vc terá que criar uma subclasse da classe MovieClip e quando criar o seu MovieClip referenciá-lo, como pertencente a subclasse por você.


Siga os passos:

1 - Crie um arquivo chamado myMovieClip.as e salve na mesma pasta do swf, este é o arquivo onde será armazenado sua classe. Se quiser saber um pouco mais sobre classes em AS2, veja o artigo que escrevi sobre o assunto. Coloque o seguinte código dentro do arquivo.

class myMovieClip extends MovieClip {
    function sizeMouse(tf:Number,r:Number,o:Number,d:String) {
        var t,w,h,distX,distY,rd:Number;
        w=this._width;
        h=this._height;
        this.onEnterFrame = function() {
            distX=int(_root._xmouse-this._x);
            distY=int(_root._ymouse-this._y);
            if(d=="x")rd=distX;
            if(d=="y")rd=distY;
            if(d=="xy" or d=="")rd=int(Math.sqrt((distX*distX)+(distY*distY)));
            t=((100*rd)/r)/100;
            if(t>1)t=1;
            if(o==0)t=1-t;
            this._width=w+w*t*tf;
            this._height=h+h*t*tf;
        }
    }
}


2 - Na criação de seu MovieClip marque a opção Advanced.



3 - Aparecerá a tela abaixo, marque a opção Export for ActionScript e no campo AS 2.0 Class coloque o nome da classe que você criou, myMovieClip.



4 - Intancie seu MovieClip para o nome que queira, como mc por exemplo e coloque o seguinte código no primeiro frame.

mc.sizeMouse(1,200,0,"xy");

5 - Pronto agora é só rodar!!

Para baixar os arquivos clique no link abaixo:

http://www.marloscarmo.com/as/menu_ampliando.zip

Um abraço, galera e até a próxima Action.

http://www.marloscarmo.com/as/menu_ampliando.zip

[ Comentar ]  [ 5 Comentários ]  

Array.randomize();
Posted by Marlos Carmo 2003-10-01 12:07:08

Este código é um código muito útil. Ele embaralha a ordem de um Array;

Exemplo:

myArray = [1, 2, 3, 4, 5];
trace(myArray.randomize()); // Resultado: 3, 5, 1, 4, 2

Array.prototype.randomize = function () {
    return this.sort(function(a,b) {return (Math.floor(Math.random()*2) == 0) ? 1 : -1;});
}


http://www.marloscarmo.com/as/randomize.as

[ Comentar ]  [ 1 Comentários ]  

points(); // Transforma 1000000 em 1.000.000
Posted by Marlos Carmo 2003-10-01 11:56:08

É um código simples que pontua as milhares de um número.

Obs.: Essa versão, funciona para somente variáveis em string e não em números.

String.prototype.points = function() {
    n=this.length;s=this;
    while(1){n-=3;if(n<=0)break;s=s.substring(0,n)+"."+s.substring(n,s.length);}
    return s;
}


http://www.marloscarmo.com/as/points.as

[ Comentar ]  [ 0 Comentários ]  

alphaMouse();
Posted by Marlos Carmo 2003-09-09 12:39:54

Este código é uma função que você determina o raio, e de acordo com a posição do Mouse, seu movieclip vai ficando transparente. Muito interessante!!!

Dê uma olhada no código abaixo:

MovieClip.prototype.alphaMouse = function(raio, ordem) {
    this.onEnterFrame = function() {
        distX = int(_root._xmouse - this._x);
        distY = int(_root._ymouse - this._y);
        hipotenusa = int(Math.sqrt((distX * distX) + (distY * distY)));
        porc = (100 * hipotenusa)/raio;
        if (porc <= 100)
            if (ordem == 0) this._alpha = porc;
            else this._alpha = 100 - porc;
    }
}

// [MovieClip].alphaMouse(raio [float], ordem [0 ou 1]);
myMovieClip.alphaMouse(100, 1);


http://www.voleiunisul.com.br/marlos/as/alphaMouse.as

[ Comentar ]  [ 7 Comentários ]  

loadMovieXY();
Posted by Marlos Carmo 2003-09-05 14:43:16

Esta action é semelhante ao loadMovie(), só que existe uma diferença interessante, onde você pode passar como parâmetro a posição X e Y de onde será carregado o objeto.

Dê uma olhada no código abaixo:

MovieClip.prototype.loadMovieXY = function (file, depth, x, y) {
    this.createEmptyMovieClip("mcEmpty" + depth, depth);
    this["mcEmpty" + depth].loadMovie(file);
    this["mcEmpty" + depth]._x = x;
    this["mcEmpty" + depth]._y = y;
}

// [MovieClip].loadMoviesXY(arquivo, level, posicaox, posicaoy);
_root.loadMovieXY("/loadswf.swf", 1, 100, 100);

http://www.voleiunisul.com.br/marlos/as/loadMovieXY.as

[ Comentar ]  [ 7 Comentários ]