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.