Acessando um nó do XML pelo ID


por João Neto

Isso é bem legal...

um arquivo XML:

<teste>
   <thread id='1' name='Joao Neto'/>
   <thread id='2' name='Zé ruela'/>
   <thread id='3' name='Dauton Janota'/>
</teste>

// No Flash>

var teste = new XML();

teste.onLoad = function(){
   trace( this[ 1 ].attributes.name ); //Joao Neto
   trace( this[ 2 ].attributes.name ); //Zé ruela
   trace( this[ 3 ].attributes.name ); //Dauton Janota
}

teste.load( 'arquivo.xml' );

Ou seja, é possivel vc acessar um nó do XML especificando o ID dele, isso pode
economizar algumas linhas de codigo tb...
postado por Jo? Neto em 11:17 PM


Warning: fopen(blogkomm/comments.txt) [function.fopen]: failed to open stream: Permission denied in /srv/www/vhosts/cgibras/indacobr/www/blogkomm/module/blogkomm_show_link.php on line 55
[ 2 comentários ]



Codificacao de cores RGB


por João Neto

Utilizamos as codificações de cores freqüentemente, mas muitos não sabem
o que realmente são aquelas letras e números que representam essas cores,
chamadas de RGB, RGB é um acronômino para Red, Green e Blue que são as
cores básicas que formam uma determinada cor, quando utilizamos no Flash
ou no próprio HTML o RGB, ele é codificado no formato #RRGGBB, #7896B4
por exemplo.
Esse formato é a união dos valores RGB tudo agrupados 2 a 2, só que esses
valores estão em uma numeração diferente da nossa, eles estão em hexadecimal.
A numeração hexadecimal ( base 16 ) possui números que vão de 0 até 9
e letras que vão de A até F, e representam 10 até 15, respectivamente.

Decimal    : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Hexadecimal: 0 1 2 3 4 5 6 7 8 9  A  B  C  D  E  F

para fazer o calculo de hexadecimal para decimal fazemos assim:

( n0 * 16^0 ) + ( n1 * 16^1 ) + ... + ( nN * 16^N )

onde n0 até nN são os números ( ou letras ) que são multiplicados por 16
elevado a potencia do índice.

para localizar o índice devemos contar as posições dos algarismos da direita
para a esquerda começando com 0;

1-0 <-> indices
F-F <-> número

Fazendo os calculos:

( F * 16^0 ) + ( F * 16^1 )
( 15 * 16^0 ) + ( 15 * 16^1 );
( 15 * 1 ) + ( 15 * 16 )
15 + 240 = 255 = FF

Então FF em hexadecimal equivale a 255 em decimal...

Fazendo o calculo para a cor #7896B4 ficaria assim:

RR -> Vermelho: 78h

1-0
7-8

( 8 * 16^0 ) + ( 7 * 16^1 )
( 8 * 1 ) + ( 7 * 16 )
8 + 112 = 120

GG -> Verde: 96h

1-0
9-6

( 6 * 16^0 ) + ( 9 * 16^1 )
( 6 * 1 ) + ( 9 * 16 )
6 + 144 = 150

BB -> Azul: B4h

1-0
B-4

( 4 * 16^0 ) + ( 11 * 16^1 )
( 4 * 1 ) + ( 11 * 16 )
4 + 176 = 180

Então a cor 0x7896B4h é equivalente à R:120 G:150 B:180

Sabendo agora como funciona a codificação das cores RGB, podemos criar
uma rotina ( função ) em Flash para fazer isso para nós automaticamente:


_global.RGB2Dec = function( RGBstr ){
     var str = RGBstr.split( '#' ).join( '' ).toUpperCase();
     var let = 'ABCDEF';
     var ret = [];


     for ( var i = 0 ; i < str.length ; i+= 2 ){
         var pt = str.substr( i , 2 );
         var s = 0;
         for ( var j = 0 ; j < 2 ; j++ ){
            var char = pt.charAt( j );
            var num = ( pos = let.indexOf( char ) ) == -1 ? parseInt( char ) : 10 + pos;
            s += num * Math.pow( 16 , 1 - j );
        }
        ret.push( s );
     }
     return( { r:ret[ 0 ] , g:ret[ 1 ] , b:ret[ 2 ] } );
}


O código acima retira a '#' da String e separa os números em blocos de 2
e logo após feita a separação é feito o calculo, com o cálculo pronto
é retornado um objeto com 3 propriedades, sendo elas R, G e B, um exemplo
de uso do código acima:


var cor = RGB2Dec( '#7896B4' );

trace( cor.R ); //120
trace( cor.G ); //150
trace( cor.B ); //180

postado por Jo? Neto em 10:37 PM

[ 5 comentários ]