Sebastix
%Europe/Berlin %737 %2008, 17:42
Hallo allemaal!
Ik ben momenteel bezig om een tagcloud script te maken in AS3.0 en daar kom ik het volgende probleem tegen. Zodra ik alle items uit een array met elkaar ga vergelijken en vervolgens iets mee ga doen; gaat het vaak mis en krijg ik de TypeError: Error #1010: A term is undefined and has no properties.
De bedoeling is dat de inhoud van de array met elkaar vergeleken wordt. Zodra een item meer dan 1 keer voorkomt, moet deze worden verwijderd uit de array en wordt er bij de counter 1 opgeteld. Uiteindelijk moet een hele lang array doorlopen worden en het aantal woorden worden geteld die er uiteindelijk in voorkomt (en elk item in de array is 1 woord).
Het script hieronder zal gewoon werken als je het test, maar zodra je een item toevoegt met dezelfde string in de property content achter elkaar...loopt het script vast.
Kan iemand me uitleggen hoe je dit wellicht oplost?
Wellicht pak ik het verkeerd aan op deze manier, dan hoor ik dat ook graag (ik ben nog niet zo heel lang bezig met AS3.0).
package
{
import flash.display.Sprite;
public class test extends Sprite
{
private var eerste:Array = new Array();
public function test()
{
eerste.push({content:"een", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"drie", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"vijf", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"drie", count:"0"});
eerste.push({content:"acht", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"acht", count:"0"});
eerste.push({content:"twee", count:"0"});
var l:Number=eerste.length;
for(var i:Number=0; i<l; i++)
{
//trace("//for1 "+eerste[i].content+" "+i);
for(var z:Number=0; z<l; z++)
{
//trace("////for2 "+z+" "+eerste[i].content+" "+i+" "+eerste[z].content);
if(eerste[i].content === eerste[z].content)
{
eerste[i].count++;
if(eerste[i].count >= 2)
{
eerste.splice(z,1);
l = eerste.length;
//trace("Script moet nu het element verwijderen uit de array welke deze zojuist vond: "+ eerste[i].content);
}
}
}
}
for(var o:Number=0; o<l; o++)
{
trace(eerste[o].content+" "+eerste[o].count);
}
}
}
}
Mvg
Sebastian
Ik ben momenteel bezig om een tagcloud script te maken in AS3.0 en daar kom ik het volgende probleem tegen. Zodra ik alle items uit een array met elkaar ga vergelijken en vervolgens iets mee ga doen; gaat het vaak mis en krijg ik de TypeError: Error #1010: A term is undefined and has no properties.
De bedoeling is dat de inhoud van de array met elkaar vergeleken wordt. Zodra een item meer dan 1 keer voorkomt, moet deze worden verwijderd uit de array en wordt er bij de counter 1 opgeteld. Uiteindelijk moet een hele lang array doorlopen worden en het aantal woorden worden geteld die er uiteindelijk in voorkomt (en elk item in de array is 1 woord).
Het script hieronder zal gewoon werken als je het test, maar zodra je een item toevoegt met dezelfde string in de property content achter elkaar...loopt het script vast.
Kan iemand me uitleggen hoe je dit wellicht oplost?
Wellicht pak ik het verkeerd aan op deze manier, dan hoor ik dat ook graag (ik ben nog niet zo heel lang bezig met AS3.0).
package
{
import flash.display.Sprite;
public class test extends Sprite
{
private var eerste:Array = new Array();
public function test()
{
eerste.push({content:"een", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"drie", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"vijf", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"drie", count:"0"});
eerste.push({content:"acht", count:"0"});
eerste.push({content:"twee", count:"0"});
eerste.push({content:"acht", count:"0"});
eerste.push({content:"twee", count:"0"});
var l:Number=eerste.length;
for(var i:Number=0; i<l; i++)
{
//trace("//for1 "+eerste[i].content+" "+i);
for(var z:Number=0; z<l; z++)
{
//trace("////for2 "+z+" "+eerste[i].content+" "+i+" "+eerste[z].content);
if(eerste[i].content === eerste[z].content)
{
eerste[i].count++;
if(eerste[i].count >= 2)
{
eerste.splice(z,1);
l = eerste.length;
//trace("Script moet nu het element verwijderen uit de array welke deze zojuist vond: "+ eerste[i].content);
}
}
}
}
for(var o:Number=0; o<l; o++)
{
trace(eerste[o].content+" "+eerste[o].count);
}
}
}
}
Mvg
Sebastian