Is het zoiets dat je wil hebben?
Persoonlijk zou'k het programmeren in flash, omdat je het daar programmatorisch kan oplossen.. waardoor je met éénzelfde code verschillende "zinslengtes" kan verwerken. (en dus de manuele labeur wegneemt)
Kheb even een voorbeeld ineengestoken:
sunbeam
Code ziet er als volgt uit: (moest het een enkeling interesseren)
Code:
var root:MovieClip = this;
var zin_str:String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce egestas eros vel est. Nullam a sapien. Suspendisse sit amet libero. Donec libero. Mauris vestibulum ligula quis purus.";
var woorden_arr:Array = [];
var graden_num:Number = 0;
var degreeOffset:Number = 0;
var scaleFactor:Number = 1;
function createWordArray():Void{
woorden_arr = zin_str.split(" ");
if(zin_str.charAt(0) == " "){woorden_arr.splice(0,1);}; // remove leading space
if(zin_str.charAt(zin_str.length-1) == " "){woorden_arr.pop()}; // remove trailing space
//trace(woorden_arr.length+" "+woorden_arr);
positionWordArray(woorden_arr.length);
}
createWordArray();
function positionWordArray(wordCount_num:Number):Void{
root.createEmptyMovieClip("zonnestraalContainer_mc",1);
graden_num = 360/wordCount_num;
for(var i:Number=0; i<wordCount_num; i++){
var zonnestraalMC:MovieClip = zonnestraalContainer_mc.attachMovie("zonnestraalID","zonnestraal"+i+"_mc",i);
zonnestraalMC._x = zon_mc._x;
zonnestraalMC._y = zon_mc._y;
zonnestraalMC._rotation = (graden_num * (i+1)) + degreeOffset; // divide by zero not allowed
var zonnestraalTXT:TextField = zonnestraalMC.zonnestraal_txt;
zonnestraalTXT.text = woorden_arr[i];
zonnestraalTXT._x = zon_mc._width/2;
//trace(zonnestraalMC._rotation);
}
}
create_mc.onPress = function():Void{
zin_str = input_txt.text;
graden_num = 0; // reset the value between sentences
createWordArray();
}
root.rotatemin_mc.rotationsymbol_txt.text = "-";
root.scaledown_mc.rotationsymbol_txt.text = "-";
rotatemin_mc.onPress = function():Void{
degreeOffset -= graden_num;
positionWordArray(woorden_arr.length);
}
rotateplus_mc.onPress = function():Void{
degreeOffset += graden_num;
positionWordArray(woorden_arr.length);
}
scaledown_mc.onPress = function():Void{
scaleFactor /= 1.1;
root.zon_mc._xscale = root.zon_mc._yscale = 100 * scaleFactor;
positionWordArray(woorden_arr.length);
}
scaleup_mc.onPress = function():Void{
scaleFactor *= 1.1;
root.zon_mc._xscale = root.zon_mc._yscale = 100 * scaleFactor;
positionWordArray(woorden_arr.length);
}
Bronbestand(en) heb'k
hier geupload.
Met een voorbeeld als dit kan je eenvoudigweg een nieuwe zin ingeven, op "create sunbeam" klikken en meteen bekijken hoe de zon eruitziet met deze nieuwe woorden. (zonder dat je dus manueel elk woord op een nieuw path moet zetten of een bepaald aantal graden moet gaan roteren) Bijkomend voordeel is dat het vectorieel is, dus je kan erop inzoomen en een screenshot nemen. (het verliest na de screenshot wel z'n vectoriële aard maar je komt er toch al een heel eind mee, in extremis zou het via extra code mogelijk zijn hier een supergrote versie van naar pdf te printen waardoor je niet beperkt bent tot je maximale schermresolutie voor de screenshot)
Momenteel controleert de code enkel op leading en trailing spaces (spatie voor of na de zin), die hij dan verwijdert. Zorg er ook voor dat je bij het ingeven van een nieuwe tekst begint op de eerste regel.