Actionscript woorden teller

Status
Niet open voor verdere reacties.

antonwas

Gebruiker
Lid geworden
11 nov 2006
Berichten
254
Beste lezers,

Ik moet een woordenteller maken in AS 2.0. Het gaat kort gezegd om een groot invoervak (input text) en een klein dynamisch uitvoervak. De gebruiker kan in het invoervak een tekst typen en vervolgens op een knop drukken die het aantal woorden in dat stukje tekst telt.

Enkele eigenschappen van mijn interface:
Naam invoervak: input_txt
Naam uitvoervak: output_txt
Naam knop: tellen_btn

Hier is de code die ik op internet heb gevonden, alleen het is Javascript. Deze code moet omgezet worden in AS 2.0. Volgens mij hoeft er niet zoveel aan veranderd te worden, alleen ik weet niet precies wat. Het is wel een uitgebreid script, want hier wordt ook rekening gehouden met dubbele spaties, harde- en zachte regeleindes, ezn.

Code:
function WoordenTellen(form)

{
  var aantalwoorden=0;
  var vorige="";
  var teken=" ";
  var i=0;
  var length=parseInt(form.tekstinvoer.value.length);
  var input=form.tekstinvoer.value;
  
//checken of eerste teken een spatie of hard of zacht regeleinde is
  teken=input.charAt(i);
  
  if (((teken == " ") || (teken =="\n") || (teken =="\r")) && (i < length))
  	{
	i++;
	vorige=teken;
	}

//aantal (combinaties van) spaties tellen vanaf de eerste invoer die geen spatie of regeleinde is
  for (i; i < length; i++)
    {
      teken=input.charAt(i);
	 
	  //als teken een spatie is en vorige is niet een spatie of regeleinde, verhoog aantalwoorden met 1
      if ((teken == " ") && (vorige != " ") && (vorige != "\n") && (vorige != "\r"))
        {aantalwoorden++;}
	 
	  //als teken een zachte return is en vorige is niet een spatie of regeleinde, verhoog aantalwoorden met 1
      if ((teken == "\n") && (vorige != " ") && (vorige != "\n") && (vorige != "\r"))
        {aantalwoorden++;}
	 
	  //als teken een harde return is en vorige is niet een spatie of regeleinde, verhoog aantalwoorden met 1
	  if ((teken == "\r") && (vorige != " ") && (vorige != "\n") && (vorige != "\r"))
        {aantalwoorden++;}
      vorige=teken;
    }

//laatste woord meetellen als laatste teken niet een spatie of regeleinde is
  if ((teken != " ") && (teken != "\n") && (vorige != "\r"))
    aantalwoorden++;

  form.AantalWoorden.value=aantalwoorden;
}

Wanneer je op de knop drukt om het aantal woorden te tellen, wordt het script aangeroepen:

Code:
this.tellen_btn.onRelease = function() {
	if (input_txt.text != "") {
		output_txt.text = telWoorden(input_txt.text)+" woord(en)";
	}
};

De aanroeping is al AS en de naam van de functie is niet hetzelfde als de naam in het aanroepende gedeelte, maar zoals de naam in het aanroepende gedeelte staat, zo moet de functie ook gaan heten. Dit is eigenlijk niet zo heel belangrijk nu, want dat kan ik zelf ook wel aanpassen

Ook heb ik nog een aantal vragen over deze code:

1. Ik snap niet precies hoe de variabele 'length' aan zijn waarde komt. (met dat pareseInt enzo)

2. Hoe weet die computer nou dat "\n" (hard regeleinde) en "\r" (zacht regeleinde) zijn. Deze tekens worden toch gewoon als strings opgeslagen in de variabele teken?

3. Ik snap niet wat er in die laatste regel van de functie gebeurt. Dat met form.AantalWoorden.... enz.

Hopelijk kan iemand me helpen.

Grts,

Anton
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan