Comunidad de diseño web y desarrollo en internet online

creacion de captcha desde as3

Citar            
MensajeEscrito el 11 Jun 2012 11:50 am
lo primero era crear un array en el que contenga caracteristicas aleatorias entre size, tipo de letra, color de letra, grados en que gira cada letra por lo que voy a intentar crear un array y que se pueda acceder, tambien hay que tener en cuenta que es muy posible que tenga que activar las fuentes embebidas ya que si no no se visualiza esa rotacion.
vamos a probar un fichero que se llame ara.as-->

Código :

package clases{
   public dynamic class ara extends Array{
      public dynamic function ara (){
      var ar01:Array=new Array();var ar02:Array=new Array();var ar03:Array=new Array();
      ar01=['Courier New','Verdana','Tahoma','Times New Roman','Lucida Sans','Arial','Georgia'];
      ar02=['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','z','x','c','v','b','n','m','1','2','3','6','5','4','7','8','9','0'];
      ar03=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
      var numa1:int = Math.floor(Math.random()*7); ///font
      var numa2:int = Math.floor(Math.random()*2); ///cursiva
      var numa3:int = Math.floor(Math.random()*2); ///negreta
      var numa5:int = (Math.floor(Math.random()*120)-60); /// rotacio
      var numa6:int = (Math.floor(Math.random()*5)+15); ///size
      var numa7:int = (Math.floor(Math.random()*(ar02.length)));
      var stng:String='';
      for (var n1:int=0;n1<6;n1++){
         var numa8:int = (Math.floor(Math.random()*(ar03.length)));
         stng=stng+ar03[numa8];
      }
      stng='0x'+stng;
      this['arf']=new Array;
      this['arf']=[numa1,numa2,numa3,numa5,numa6,ar02[numa7],stng];
      }      

}}



las caracteristicas de cada letra, tambien hay que tener en cuenta que la funcion sea dinamica

voy a probar con una lista de seis letras me sale mas o menos esto

Código :

var ar01z:String=new String();
var tfta:tft=new tft();
var tftb:TextFormat=new TextFormat();
tftb=tfta.tft2;
var tfda:tfdd=new tfdd(tf.tft2,7,'captcha',6);
tfda.x=200;tfda.y=10;
var spr0a:Sprite=new Sprite();
var spr1a:Sprite=new Sprite();
for(var t:int=0;t<6;t++){
this['uto'+t]=new ara();
this['arx'+t]=this['uto'+t].arf;
this['tftz'+t]=new TextFormat;
if(this['arx'+t][0]==0){var fuente00:fonto1=new fonto1();
this['tftz'+t].font=fuente00.fontName;}
if(this['arx'+t][0]==1){var fuente11:fonto2=new fonto2();
this['tftz'+t].font=fuente11.fontName;}
if(this['arx'+t][0]==2){var fuente22:fonto3=new fonto3();
this['tftz'+t].font=fuente22.fontName;}
if(this['arx'+t][0]==3){var fuente33:fonto4=new fonto4();
this['tftz'+t].font=fuente33.fontName;}
if(this['arx'+t][0]==4){var fuente44:fonto5=new fonto5();
this['tftz'+t].font=fuente44.fontName;}
if(this['arx'+t][0]==5){var fuente55:fonto6=new fonto6();
this['tftz'+t].font=fuente55.fontName;}
if(this['arx'+t][0]==6){var fuente66:fonto7=new fonto7();
this['tftz'+t].font=fuente66.fontName;}
if(this['arx'+t][1]==0){this['tftz'+t].italic=false;}
if(this['arx'+t][1]==1){this['tftz'+t].italic=true;}
if(this['arx'+t][2]==0){this['tftz'+t].bold=false;}
if(this['arx'+t][2]==1){this['tftz'+t].bold=true;}
this['tftz'+t].color=this['arx'+t][6];
this['tftz'+t].size=this['arx'+t][4];
this['tfdz'+t]=new TextField;this['tfdz'+t].defaultTextFormat = this['tftz'+t];
this['tfdz'+t].text=this['arx'+t][5];
this['tfdz'+t].embedFonts = true;///importante sino no giran las letras
this['spr00x'+t]=new Sprite();
this['spr00x'+t].addChild(this['tfdz'+t]);
this['tfdz'+t].selectable=false;
this['spr00x'+t].rotation=this['arx'+t][3];
this['spr00x'+t].x=10+(30*t);
this['spr00x'+t].y=15;ar01z=ar01z+this['arx'+t][5];
spr0a.addChild(this['spr00x'+t]);}
spr0a.addChild(tfda);

bien aki luego tendria que poner un boton que me actualizase el captcha, el problema es que el boton asociado a una funcion cuando le hago click, y esa funcion es exactamente el mismo codigo de arriba, hay alguna manera de hacer un reset de eso y volver a ejecutar el codigo de arriba sin tener que volver a escribir todo el codigo de nuevo ?

la opcion que veo es-->

Código :

spr0a.addChild(tfda);
var str03:String=new String();
str03='./a4f6sdfgsdg6/87dfsffds.png';                   //imagen boton
var loadima:Loader=new Loader();
var urlima:URLRequest=new URLRequest(str03);
loadima.load(urlima);
spr1a.addChild(loadima);
spr1a.x=300;spr1a.y=20;
spr1a.scaleX=0.30;
spr1a.scaleY=0.30;
spr1a.buttonMode=true;
spr0a.addChild(spr1a);
spr0a.y=500;
spr0a.x=50;
addChild(spr0a);
spr1a.addEventListener(MouseEvent.CLICK,ffaz);

dynamic function ffaz (evt:MouseEvent){ar01z='';

for(var t:int=0;t<6;t++){spr0a.removeChild(this['spr00x'+t]);
this['uto'+t]=new ara();
this['arx'+t]=this['uto'+t].arf;
this['tftz'+t]=new TextFormat;
if(this['arx'+t][0]==0){var fuente00:fonto1=new fonto1();
this['tftz'+t].font=fuente00.fontName;}
if(this['arx'+t][0]==1){var fuente11:fonto2=new fonto2();
this['tftz'+t].font=fuente11.fontName;}
if(this['arx'+t][0]==2){var fuente22:fonto3=new fonto3();
this['tftz'+t].font=fuente22.fontName;}
if(this['arx'+t][0]==3){var fuente33:fonto4=new fonto4();
this['tftz'+t].font=fuente33.fontName;}
if(this['arx'+t][0]==4){var fuente44:fonto5=new fonto5();
this['tftz'+t].font=fuente44.fontName;}
if(this['arx'+t][0]==5){var fuente55:fonto6=new fonto6();
this['tftz'+t].font=fuente55.fontName;}
if(this['arx'+t][0]==6){var fuente66:fonto7=new fonto7();
this['tftz'+t].font=fuente66.fontName;}
if(this['arx'+t][1]==0){this['tftz'+t].italic=false;}if(this['arx'+t][1]==1){this['tftz'+t].italic=true;}
if(this['arx'+t][2]==0){this['tftz'+t].bold=false;}if(this['arx'+t][2]==1){this['tftz'+t].bold=true;}
this['tftz'+t].color=this['arx'+t][6];
this['tftz'+t].size=this['arx'+t][4];
this['tfdz'+t]=new TextField;
this['tfdz'+t].defaultTextFormat = this['tftz'+t];this['tfdz'+t].text=this['arx'+t][5];
this['tfdz'+t].embedFonts = true;
this['spr00x'+t]=new Sprite();
this['spr00x'+t].addChild(this['tfdz'+t]);
this['tfdz'+t].selectable=false;
this['spr00x'+t].rotation=this['arx'+t][3];
this['spr00x'+t].x=20+(30*t);this['spr00x'+t].y=15;
ar01z=ar01z+this['arx'+t][5];
spr0a.addChild(this['spr00x'+t]);}
spr0a.addChild(tfda);
var str03:String=new String();
str03='./a4f6sdfgsdg6/87dfsffds.png';
var loadima:Loader=new Loader();
var urlima:URLRequest=new URLRequest(str03);
loadima.load(urlima);
spr1a.addChild(loadima);
spr1a.x=300;spr1a.y=20;
spr1a.scaleX=0.30;
spr1a.scaleY=0.30;
spr1a.buttonMode=true;
spr0a.addChild(spr1a);
spr0a.y=500;spr0a.x=50;
addChild(spr0a);
}


si veis es el mismo codigo el que esta dentro de la funcion ffaz, habria alguna manera de que la funcion esta no tubiera de volver a poner todo el codigo?.

Lo mismo me sucede con algunas funciones de esteganografia desde as3 con una imagen creada en php.
gracias por leereme.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Jun 2012 02:19 pm
Tip> considera redactarlo como tutorial, "Como hacer un captcha en AS3", lo pones en aportes y desde allí quizás lo pasan a portada
Si quieres realmente preguntar, síntesis y al grano

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2012 02:25 pm
ya si de acuerdo pero me gustaria saber si esto es posible en as3

codigo 1
codigo 2
codigo 3

funcion aa(){
ir a zona codigo 2 y ejecutar solo codigo 2
}

es para que ocupe menos

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Jun 2012 02:27 pm
Depende como definas codigo 1, codigo 2 y codigo 3
Por ejemplo si son clases ya tienes resuelto tu problema.
Si son trozos de código dentro de un corpus enorme, metelo en funciones

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2012 02:31 pm
ok de acuerdo entonces lo hice mal, primero tenia que haver creado una funcion que me generara (retornara) un sprite y luego eventualizarla ya en el evento carga inicial y en el evento click al boton, ok gracias.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.