Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-01-2008, 09:11   #1 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
texteffekt - random buchstaben und resultat

hallo ihrs,
sitze nach sher langer zeit mal wieder an as dran und verusuche folgendes darzustellen.

in einem vorgegebenen textfeld oder einem im as definierten bereich, sollen buchstaben (satzzeichen) sich die ganze zeit ändern per random. zb. 20 buchstaben nebeneinander und davon 20 zeilen, und jeder buchstabe soll sich ändern per zufall.

zweite sache wäre das sich nach bestimmter zeit oder tastenbefehl langsam aus diesem satzzeichen-wirrwar ein name bilden soll, import per txt. als variable.

ich versuch das mal einfach optisch darzustellen:

buchstaben per random:

akcodlwusbsoboofdgsbmswhs
nspojdefvbnubwfklvöpvübncdd
dbofepocudnsmllauwbdmoehd
idzebdjINEOdndbzudbsaownqn


und am ende dann so:


Jan
Bauer



am tollsten wäre es wenn sich der name auch nicht hintereinander erscheint, spriche wie J a n B a u e r , sondern auch zufällig findet,
wenn der buchstabe durch random gerade bei dem gesuchten buchstaben ist, hät er an. also zb dann so: a B e r a J n u und am ende halt dann Jan Bauer dasteht.

so ich hoffe ich konnte mich halbwegs verständlich ausdrücken.

ein bisschen was bekomme ich hin aber nicht ansatzweise so wie es aussehen sollte. soweit war ich mit AS noch nicht anvertraut.

dank euch schonmal für eure ideen!

mfg
marcel
vato ist offline   Mit Zitat antworten
Alt 09-01-2008, 09:30   #2 (permalink)
obvious
 
Registriert seit: Dec 2007
Ort: Berlin
Beiträge: 125
Zufällige Buchstaben bekommst du ganz einfach hiermit:
String.fromCharCode( Math.round(Math.random()*(90-65)+65) );

Die Nummern kannst du dieser Tabelle entnehmen: http://www.tony-franks.co.uk/UTF-8.htm
xisari ist offline   Mit Zitat antworten
Alt 09-01-2008, 11:04   #3 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
jau das krieg ich soweit auch noch hin, aber da endet es dann auch schon.

ich weiß zb nicht wie ich es hinkriege das er mir die ganze fläche voller satzzeichen stellt und die rotieren.

und das viel komplizierte mit der auflösung des namen, da hab nich noch garkeine ideen, wenn ich nicht gerade 500 textfelder machen möchte wo ich jedes satzzeichen einzeln durchlaufen lasse. und selbst damit ist es schon knapp.

mfg
marcel
vato ist offline   Mit Zitat antworten
Alt 09-01-2008, 12:11   #4 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
hmm keiner eine idee?
doch so ein schweres vorhaben was da in mein kopf rumschwirrt?
vato ist offline   Mit Zitat antworten
Alt 09-01-2008, 15:08   #5 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Doch, doch... da gibt es bestimmt einige mit Ideen und auch Lösungsansätzen. Nur war deine Anfrage ein bisschen schwammig formuliert und bis am Schluss gar nicht wirklch eine Frage! Oder auf was hast du eine Antwort erhalten wollen? Oder am liebsten gleiche eine fertige Applikation?
Stell konkrete Fragen und du wirst konkrete Antworten erhalten - dass dir aber jemand das Teil codet wirst du wohl nicht erleben (ausser du zahlst was dafür und postet die Anfrage im Job-Teil!)
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 09-01-2008, 16:11   #6 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
will ich auch garnicht, weiß halt nur nicht mehr wie das alles aussieht mit as , prototypen und dem allen, falls es so rüberkam das ich was fertiges haben will, sorry.

zb.

PHP-Code:

var myletter = ["a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z"];

this.onEnterFrame = function() {
    
mc.text myletters[Math.floor(Math.random()*myletter.length)];} 
das rattert ja soweit durch bei 25 bps, wie aber bremse ich den effekt ab un bringe ihn dann letzlich zum stehen?

währe ein counter hier das beste?


dann eine weite frage, wenn ich zb den hier machen würde:

PHP-Code:
var myletter = ["a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z"];



this.onEnterFrame = function() {
    
mc.text myletters[Math.floor(Math.random()*myletter.length)]+myletters[Math.floor(Math.random()*myletter.length)]+myletters[Math.floor(Math.random()*myletter.length)]+myletters[Math.floor(Math.random()*myletter.length)];} 
geht das auch zu vereinfachen? und kann man zb die beiden mittleren satzzeichen einzeln ansteuern?

mfg

marcel
vato ist offline   Mit Zitat antworten
Alt 09-01-2008, 16:40   #7 (permalink)
obvious
 
Registriert seit: Dec 2007
Ort: Berlin
Beiträge: 125
Also die Fläche machst du mit zwei verschachtelten for-Schleifen

PHP-Code:
var sString String '';
var 
oTField TextField mc.text;
oTField.html true;
oTField.multiline true;

for(var 
i:Number=0i<10i++)
{
    
sString += '<p>';
    for(var 
j:Number=0j<20j++)
    {
        
sString += String.fromCharCodeMath.round(Math.random()*(90-65)+65) );
    }
    
sString += '</p>';
}

oTField.htmlText sString 
xisari ist offline   Mit Zitat antworten
Alt 09-01-2008, 21:37   #8 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
dank dir soweit für deine hilfe,
aber ehrlich gesagt kann ich damit nicht viel anfangen, aber das liegt daran das ich kaum da durchblicke und das nicht verstehe.
vato ist offline   Mit Zitat antworten
Alt 09-01-2008, 22:30   #9 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
hmmm jemand ne ahnung warum das nichg funktioniert?

PHP-Code:

var myletters = ["a""b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z"];
MovieClip.prototype.buch = function() {
    
this.text myletters[Math.floor(Math.random()*myletters.length)];
};
_root.onEnterFrame = function() {
    
mc.mc.buch();
}; 
vato ist offline   Mit Zitat antworten
Alt 10-01-2008, 09:37   #10 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Ich finde das Beispiel von xisari praktischer!
Ich habe den Code noch bissi angepasst. Hier mal zur Übersicht:

ActionScript:
  1. var sString : String = '';
  2. var spalten:Number = 10;
  3. var zeilen:Number = 20;
  4.  
  5. for(var i:Number=0; i<spalten; i++)
  6. {
  7.     sString += '<p>';
  8.     for(var j:Number=0; j<zeilen; j++)
  9.     {
  10.         sString += String.fromCharCode( Math.round(Math.random()*(25)+65) );
  11.     }
  12.     sString += '</p>';
  13. }
  14.  
  15. var oTField : TextField = mc1.meintextfeld;
  16. oTField.html = true;
  17. oTField.multiline = true;
  18. oTField.htmlText = sString

Nun zu den einzelnen Zeilen:

Zeile 1: leeren String initialisieren. Diesen packen wir dann in unser Textfeld (wenn er dann gefüllt ist).
PHP-Code:
var sString String ''
Zeile 2+3: damit machen wir die Textgrösse ein bisschen flexibler.
PHP-Code:
var spalten:Number 10;
var 
zeilen:Number 20
Zeile 5: hier initialisieren wir die äussere Schleife. Diese wird in unserem Beispiel 10 Mal durchlaufen. Alles, was zwischen der Klammer auf Zeile 6 und der schliessenden Klammer auf Zeile 13 steht, wird 10 Mal ausgeführt.
PHP-Code:
for(var i:Number=0i<spalteni++) 
Zeile 7: Fügen wir dem leeren String ein öffnendes HTML-Absatz-Element (<p>) hinzu. Damit erreichen wir, dass nach jeder Zeile ein Umbruch statt findet.
PHP-Code:
sString += '<p>'
Zeile 8: hier initialisieren wir die innere Schleife. Diese wird in unserem Beispiel 20 Mal ausgeführt. Alles, was zwischen der Klammer auf Zeile 9 und der schliessenden Klammer auf Zeile 11 steht, wird 20 Mal ausgeführt.
PHP-Code:
for(var j:Number=0j<zeilenj++) 
Zeile 10: dies ist das eigentliche Herzstück des ganzen! Anstatt, dass du dein "mühsames" Array mit den Zeichen drin verwendest, generieren wir per Zufall eine Zahl zwischen 65 und 90. Unter Verwendung der String-Methode fromCharCode, welche eine Zahl als Parameter erwartet, erhalten wir einen Grossbuchstaben zwischen A und Z.
PHP-Code:
sString += String.fromCharCodeMath.round(Math.random()*(25)+65) ); 
sehen wir uns die einzelnen Teile mal genauer an:
PHP-Code:
Math.random() 
liefert laut der Flashhilfe (abrufbar mit deiner F1-Taste in Flash) einen Zufallswert zwischen 0 und 1.
PHP-Code:
Math.random()*(25
liefert uns daher einen Wert zwischen 0 und 35 (Math.random ist minimal 0 --> 0*35, maximal 1 --> 35). Wahrscheinlich wird die Zahl allerdings nicht gerade sein (bsp. 0.888597590848804 * 25 --> 22.21...).
PHP-Code:
Math.random()*(25)+65 
liefert uns also irgendeine ungerade Zufallszahl zwischen 0 und 35 plus 65. Das heisst, wir haben eine Zahl zwischen 65 und 100 (minimal 0 + 65, maximal 25 + 65).
PHP-Code:
Math.round(wert
da unser Zufallswert, wie vorher gesehen, noch ziemlich ungerade ist, String.fromCharCode aber einen geraden Wert erwartet, müssen wir unseren Zufallswert runden. (Genaueres wiederum in Flashhilfe aka F1).
PHP-Code:
String.fromCharCode(wert
dieser Wert liefert ein Zeichen (nach dem, UTF-Zeichensatz(?)). Der erste Buchstabe, das A, ist das 65. Zeichen, der letzte Buchstabe, das Z, das 90. Nun könne wir also über unseren gerundeten Zufallswert (der zwischen 65 und 90 liegt) ein Zeichen ausgeben.

Zeile 12: Hier schliessen wir nun die Zeile mit dem schliessenden HTML-Tag ab. Da das ganze 10 Mal ausgeführt wird, haben wir am Schluss in unserem sString 10 HTML-Tags, welche zwischen <p> und </p> 20 zufällig ausgewählte Buchstaben enthalten.
PHP-Code:
sString += '</p>'
Zeile 15-18: Hier passen wir nun das von uns gewünschte Textfeld so an, dass die Ausgabe stimmt. Als erstes speichern wir in der Variable oTField eine Referenz auf unser Textfeld. Im Beispiel liegt ein Textfeld mit dem Instanzennamen "meintextfeld" im MovieClip "mc1" (dies kann selber eine Variable oder direkt ein Instanzenname sein).
Mit html = true sagen wir dem Textfeld, dass HTML-Code akzeptiert werden soll (unsere Zeilen befinden sich ja in <p>-Absätzen!).
Mit multiline = true stellen wir das Textfeld so ein, dass es mehrere Zeilen anzeigt (wir haben ja 10 davon...).
Schliesslich weisen wir dem Textfeld unseren generierten HTML-Text zu.
PHP-Code:
var oTField TextField mc1.meintextfeld;
oTField.html true;
oTField.multiline true;
oTField.htmlText sString 
So, hoffe, das mal ein bisschen was klarer gemacht. Du wolltest es einfacher als dein Beispiel? Siehe oben!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 10-01-2008, 10:11   #11 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
wow erstmal ein ganz großes danke!

versteh nun was dort vorsichgeht, kein wunder bei einer solch wunderbaren erklärung (:

aber ein paar sachen sind mir nicht klar und hoffe eure nerven niht auf den tiefpunkt zu bringen.

und zwar:

PHP-Code:

var sString:String '';

var 
spalten:Number 40;

var 
zeilen:Number 60;


for (var 
i:Number 0i<spalteni++) {

    
sString += '<p>';

    for (var 
j:Number 0j<zeilenj++) {

        
sString += String.fromCharCode(Math.round(Math.random()*(25)+65));

    }
    
sString += '</p>';


}
var 
oTField:TextField mc1.meintextfeld;

oTField.html true;

oTField.multiline true;

oTField.htmlText sString
das alles macht er nun ja einmalig, wie krieg ich das hin, das er das random verfahren dauerhaft macht?

PHP-Code:
this.onEnterFrame = function (){
mc1.meintextfeld.text String.fromCharCode(Math.round(Math.random()*(25)+65));

wenn ich versuche das irgendwie in einer function zu stecken klappt das nicht. wo ist da mein denkfehler oder wo fehlt der ansatz?


2.frage.

wenn ich so den string dann generiere, gibt es die möglichkeit die satzzeichen einzeln anzusprechen?

vereinfacht verdeutlicht zeile 7 spalte 9, sString = String.fromCharCode(65);


sowas in der art oder anders?

mfg
marcel

und nochmal dickes dankeschön für die bisherige hilfe

Geändert von vato (10-01-2008 um 10:17 Uhr)
vato ist offline   Mit Zitat antworten
Alt 10-01-2008, 11:13   #12 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Du musst einfach jenen Teil, der das ganze generiert in eine eigene Funktion packen:

ActionScript:
  1. var spalten:Number = 40;
  2. var zeilen:Number = 60;
  3. var oTField:TextField = mc1.meintextfeld;
  4. oTField.html = true;
  5. oTField.multiline = true;
  6.  
  7. function fillWithRandomChars(tf:TextField, rows:Number, columns:Number):Void
  8. {
  9.     var sString:String = '';
  10.     for (var i:Number = 0; i < rows; i++) {
  11.         sString += '<p>';
  12.         for (var j:Number = 0; j < columns; j++) {
  13.             sString += String.fromCharCode(Math.round(Math.random() * (25) + 65));
  14.         }
  15.         sString += '</p>';
  16.     }
  17.     tf.htmlText = sString;
  18. }

Jetzt kannst du einfach die Funktion aufrufen (meinetwegen in nem oEF oder mit nem Interval) und als Parameter das zu füllende Textfeld, die Anzahl Zeilen und die Anzahl Zeichen pro Zeile als Parameter übergeben.

Wenn du aber auf jedes Zeichen separat zugreifen willst, würde ich empfehlen, statt eines Textfeldes mehre zu nehmen und in jedes nur ein Zeichen einfügen. Diesen Code kaue ich dir aber nicht vor! Ich traue dir zu, dass du es hinkriegst, die Funktion so um zu schreiben, dass du so viele Textfelder erstellst, wie du Zeichen willst. Dann packst du einfach in jedes Textfeld ein Zufallszeichen.
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 10-01-2008, 11:16   #13 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
nochmals erstmal großes danke. werd mich da mal durchbeissen und das resultat dann ma posten bzw dnek ich eh da kommen noch ein paar fragen (:

soweit danke erstmal

mfg
marcel
vato ist offline   Mit Zitat antworten
Alt 10-01-2008, 11:52   #14 (permalink)
AS-lehrling
 
Registriert seit: Jul 2001
Ort: Berlin
Beiträge: 614
nur nochmal zum verständnis.

die mehreren textfelder die ich dafür erstellen sollen, die sollen dann aber von mir per hand angelegt bzw erstellt werden, und nicht per AS, ist das richtig?

mfg
marcel
vato ist offline   Mit Zitat antworten
Alt 10-01-2008, 12:25   #15 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
bleibt dir überlassen... ich würds gleich mit AS machen... ist weniger Arbeit! Und frag jetzt nicht, wie man ein neues Textfeld erstellt!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele