/**
* Copyright jopiruizen ( http://wonderfl.net/user/jopiruizen )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/r0Tg
*/
package{
import flash.display.Sprite;import flash.text.TextField;import flash.text.TextFormat;
public class TextTile extends Sprite{
var w=470,h=470,chars,fhit=true,temp,targets,lvl=0,gameOver=false;
var timeout=10,wait=3000,tCtr=0,ins="Type in to start";
var area:Sprite,input:Sprite,fld:TextField,red:Sprite;
public function TextTile() { loaderInfo.addEventListener("complete",init);}
function draw(t,c,a,o) {
t.graphics.beginFill(c,a);
if(o.s=="c"){t.graphics.drawEllipse(0-(o.w/2),0 -(o.w/2),o.w,o.w);}
else if(o.s=="r"){t.graphics.drawRect(0,0,o.w,o.h);}
t.graphics.endFill();
}
function init(e:*){
chars = "";targets=new Array();
mouseChildren = false;
draw(this,0x000000,1,{w:w,h:h,s:"r"});
red=new Sprite();draw(red,0xFF0000,0.5,{w:w,h:2,s:"r"});addChild(red);uplvl();
area=new Sprite(); draw(area,0,0,{w:w,h:h,s:"r"});
addChild(area);
input=new Sprite();
draw(input,0xFF9900,1,{w:w-40,h:50,s:"r"});
input.x=(w-(w-40))/2;
input.y=h-50-10;
addChild(input);
fld=new TextField();input.addChild(fld);fld.border=true;fld.borderColor=0xFFFFFF;fld.width=w-40;fld.height=50;
fld.selectable=false;fld.maxChars=12;
var tf:TextFormat = new TextFormat("Comic Sans MS",30,0x000000,true);
tf.align = "center";
fld.defaultTextFormat = tf;
fld.text=ins;
addEventListener("keyDown",keyh);
addEventListener("enterFrame",enfra);
stage.focus=this;
create();
}
function uplvl(){lvl++;red.y=(h-((lvl+1)*10))-50;}
function hit(){return (h-((lvl+1)*10))-50}
function keyh(e:*){
if( fhit == true ){fhit=false; fld.text="";}
var ccode = e.charCode;
if( ccode == 8) {//backspace
temp=chars.split("");
temp.splice(temp.length-1,1);chars="";
for(var i=0;i<temp.length;i++)chars+=temp[i];
} else if(ccode==13||ccode==32){ //enter
cmp();chars="";
} else if((ccode>=65&&ccode<=90)||(ccode>=97&&ccode<=122)) {
chars+=String.fromCharCode(ccode);
}
fld.text=chars;
}
function mod(dvn:*,dvsr:*){return((dvn%dvsr)== 0);}
function ri(i) {return Math.floor( Math.random() * i);}
function rr(i,j){return Math.round(Math.random()*(j-i))+i;}
function crfld(w,h,s,c,t){
var f=new TextField();
f.width=w;f.height=h;
var tf=new TextFormat("Tahoma",s,c,true);
tf.align="center";f.defaultTextFormat=tf;f.text=t;
return f;
}
function rt(){
var l=rr(rr(3,5),rr(6,9)),s="";
for( var i=1;i<=l;i++){
var c=97+ri(25);
s+=String.fromCharCode(c);
}
return s;
}
function cmp(){
for(var i=0;i<targets.length;i++){
var o=targets[i];
if(o.txt.toUpperCase()==chars.toUpperCase()){
area.removeChild(o.main);
targets.splice(i,1);
}
}
}
function create(){
var o={};
o.main=new Sprite();
draw(o.main,0xFFFFFF,0.2,{w:100,h:30,s:"r"});
o.main.name ="target_" + ri(1000000) + "_" + targets.length;
o.main.x=ri(470-100);
o.main.y=-15;
o.txt=rt();
o.main.addChild(crfld(100,30,18,0xFF9900, o.txt));
o.speed= rr(rr(1,2),rr(3,5))/rr(rr(2,4),5);
targets.push(o);
area.addChild(o.main);
wait=(rr(rr(2,5),7))*300;
return o;
}
function act(){
for( var i=0;i<targets.length;i++){
var o=targets[i];
o.main.y += o.speed;
if(o.main.height+o.main.y>hit() ){
targets.splice(i,1);
area.removeChild(o.main);
uplvl();i--;
}
}
}
function enfra(e:*){
if( mod(tCtr,wait) ){
create();
}
act();
tCtr+=timeout;
if(tCtr>50000)tCtr=0;
}
}
}