PDA

Volledige versie bekijken : Smilley class


Flashingback
%Europe/Berlin %791 %2005, 19:59
Zo nadat roenes me ff op men gemak heeft gesteld ga ik hier ook maar is een topic starten.

Ik had eerst een smilley systeempje gemaakt in AS1.0 en nu ik me wat ben gaan bezig houden met AS2.0 heb ik hem omgezet naar AS2.0 .

dit is em.


class Smilley {
private var root:MovieClip;
private var textfield:String;
private var textstring:String;
public function Smilley(root, textfield, loadstring) {
var textstring:String = loadstring.split("\n").join(" \n").split(":)").join(" :) ").split(":D").join(" :D ");
this.root = root;
this.textfield = textfield;
this.textstring = textstring;
smilleyReplace(":D", "mc_smilley");
smilleyReplace(":)", "mc_smilley2");
}
private function smilleyReplace(smilley:String, smilleyMc:String) {
var splitSpatie:Array = textstring.split(" ");
var totalSpaties:Number = splitSpatie.length;
var lastTxtHeight:Number = 0;
var slicedArray:Array = Array();
var regelsArray:Array = Array();
var totalSmilleys:Number = 0;
var fontSpec:TextFormat = new TextFormat();
// hier kan je de font gegevens aanpassen
fontSpec.size = 14;
fontSpec.font = "Arial";
fontSpec.leading = 2;
//
for (var s = totalSpaties; s>=0; s--) {
var txtSliced:String = splitSpatie.slice(0, s).join(" ");
var txtHeight:Number = fontSpec.getTextExtent(txtSliced, 400).textFieldHeight;
if (txtHeight != LastTxtHeight) {
var LastTxtHeight:Number = txtHeight;
slicedArray.push(txtSliced);
}
}
slicedArray.reverse();
var totalSlices:Number = slicedArray.length;
for (var r = 0; r<=totalSlices; r++) {
var oneSliceBack:String = slicedArray.slice(r-1, r).join("");
var txtRegels:String = slicedArray.slice(r, r+1).join("").split(oneSliceBack).join("").split("\n").join("");
if (r != 1) {
regelsArray.push(txtRegels.slice(1, txtRegels.length));
} else {
regelsArray.push(txtRegels);
}
var propertiesTxt = fontSpec.getTextExtent("tekst om hoogte te specificieren");
var rHeight:Number = propertiesTxt.textFieldHeight-4;
var totalSmilleysR:Number = regelsArray[r].split(smilley).length-1;
if (totalSmilleysR>0) {
totalSmilleys++;
var smilleysR:Array = regelsArray[r].split(smilley);
for (var i = 1; i<=smilleysR.length-1; i++) {
var smilleysMcs:MovieClip = root.attachMovie(smilleyMc, smilleyMc+i, totalSmilleys+root.getNextHighestDepth());
smilleysMcs._y = (rHeight*r)-smilleysMcs._height;
smilleysMcs._x = fontSpec.getTextExtent(smilleysR.slice(0, i).join(" ")).textFieldWidth;
}
}
}
root[textfield] = textstring;
}
}


en op deze manier roep ik em aan in de fla


new Smilley(this,txt_bericht,"hier komt tekst :)")





Ik weet niet of dit allemaal al perfect OOP is maar ik hoor het graag als er dingen beter kunnen.

Tha Narie
%Europe/Berlin %847 %2005, 21:20
Moet het niet 'Smiley' zijn? :p
Verder werkt hij niet goed als je veel hoofdletters naast elkaar hebt staan, dan gaat hij schuiven :(

Verder top gedaan!

Flashingback
%Europe/Berlin %861 %2005, 21:41
mjah net ff gescheckt via google en die vraagt ook of het niet smiley moet zijn dus je zal wel gelijk hebben. Dat van die hoofdletters mjah... dit is de eerste keer dat ik een smilley systeem echt volledig werkend krijg behalve dan die onnauwkeurigheid. Hoogstwaarschijnlijk ga ik em nog wel is updaten om hem nauwkeuriger te maken maar eerst moet ik natuurlijk zoeken wat het ligt.

Is men code anders logisch geschreven? zijn er punten waar ik op moet letten of die ik beter anders kon doen?

Dauntless
%Europe/Berlin %866 %2005, 21:48
Ziet er leuk uit! :)

Over je code...

-geen return type gedeffiniëerd
-soms data type vergeten
-die textformat zou je ook vanboven moeten bijzetten, ipv dat ze midden in je code moeten veranderen

+ordelijk
+leuk! :)

Ik zou persoonlijk nog de constructor niets laten doen buiten de instance naam van het textfield en zo opslaan. Dan kan je daarna dmv een method (of als je hem public maakt) het textFormat en dergelijke aanpassen. Daarna dan iets van mySmiley.draw(); en je krijgt de ouput in je text field.

Roenes
%Europe/Berlin %015 %2005, 01:21
Nog niet uitgebreid naar gekeken, daar is het al wat laat voor. Maar ik ga em morguh uitgebreid doorkijken. Ben benieuwd hoe je het systeem gemaakt hebt! :)

En leuk dat je ook wat gepost hebt hier :)

Flashingback
%Europe/Berlin %415 %2005, 10:58
@Dauntless: weeral is bedankt voor je handige tips. Ik ga em dan binnenkort nog wel is updaten.

@Roenes: Alvast bedankt en ik heb hem hier met plezier gepost :D

Tha Narie
%Europe/Berlin %555 %2005, 14:20
Ik ga nu beginnen met een SmileyRenderer (voor op het werk), daar zal ik wel iets van showen als hij af is :)

Flashingback
%Europe/Berlin %474 %2005, 12:23
owk bedankt, ben benieuwd