mal wieder was zum thema random! [FlashMX]

Daensch

Erfahrenes Mitglied
hab n prob bei diesem random mist =)

variable1 = random(10);
ist der Code den ich aus einem anderen thread genutzt hatte !
Egal ob ich den nehme, oder die komplexere Variante mit
variable1 = Math.random(10);

bei beidem sagt er mir als ausgabe "dies muss auf einer ONClipEvent ..blabla sein"

ich will eigentlich nur, das er mir STÄNDIG einen zufalls wert gibt.

genutzt werden soll das für nen musikplayer als equilizer =) mit einzelnen balken die halt bis z.b. wert 20 skalieren !

kann mir da jmd helfen wie ich onclipevent umgehe?

der absolute pfad wäre: _root.musik.syn.synbalken._yskale = variable
syn is ein mc und synbalken auch! nur bei onclip gehts halt irgendwie nur mit bedingung und da kann ich nur einen einmaligen wert erreichen !

mfg daensch
 
Mit welcher Flashversion arbeitest du?

In allen Versionen kommst du um einen Eventhandler nicht herum - nur sieht der von Flash5 und FlashMX/MX2004 unterschiedlich aus und wird unterschiedlich gehandhabt.

Gruß
Rena

PS Ein paar sinnvoll gesetzte Großbuchstaben wären auch nett - siehe den getoppten Thread hier. Danke.
 
Oh mann tut sich richtig schwer Normal Groß-/Klein zu schreiben wenn man sich erst mal an den üblichen Forenslang gewohnt hat ;) ...

Mh, also Rena hat schon nicht ganz unrecht - Um Events wirst Du nicht ganz herum kommen ...

Allerdings kannst Du in diesem Fall auch einen Interval benutzen ...

PHP:
randomInt = setInterval(function() {
  var1  = random(10);
  ...
   _root.musik.syn.synbalken._yscale = var1;
  ...
}, 100);

Alternativ kannst du auch das onEnterFrame-ClipEvent benutzen ... aber Achtung die Aktion wird dann bei jedem Frame ausgeführt ... am besten in einem neuen ControllMc... so kannst du das rein theoretisch für jeden Synthbalken machen ... :)

PHP:
ctrlMc = createEmptyMovieClip('AsCtrl_mc', 100);
ctrlMc.onClipEvent(EnterFrame)  {
  ...
}
 
Nich nur der ForenSlang =)
allgm. chattn

Also: Ich nutze noch FlashMX aba das hatte ich im Topic schon versehen. Vielleicht probiere ich demnächst auch mal das MX2004 aus, welches ich von einem Kumpel bekomme (ausgeliehen versteht sich, denn leider is sowas für mich einfach zu teuer =( schade eig.)

Aber die Problembehebung versteh ich immer noch nicht ganz. Tut mir ja leid =)

D.h. ich kann Flash nicht Sagen er soll mir ständig irgendwelche wert von 0-20 generieren?! Damals beim programmieren wäre etwas wie

for i = 1 to 999999
random = zahl
next i

oder

:random
random = zahl
goto random

Einfache schleifen halt! Gäbe es nich so eine möglichkeit?!

Und was meinst du mir ControllMc?

danke trotzdem vorerst..
Mfg Daensch

ANHANG:

onClipEvent(enterFrame){
randomInt = setInterval(function() {
var1 = random(10);
_root.musik.syn.synbalken._yscale = var1;
}, 100);
}

habe ich jez mal dazu geschrieben. Ich bin der Meinung ich habe öfters schon mal den Befehl onClipEvent() gelesen, also OHNE bedingung!
Jez kommt zwar keine Fehlermeldung mehr =) dafür funktioniert es nich.
Ich glaub ich setzt mich wieder und mal in meinem Zeichenblock rum.
 
Zuletzt bearbeitet:
Hallo,

ich habe Dir mal ein kleines Sample herunterprogrammiert (eigentlich für auch gar nicht so unpraktisch, weil ich sowas sicher auch mal brauchen kann ^^).

PHP:
// Anzahl der Balken ...
barNum = 20;
// Breite/Höhe der Balken ...
barWidth = 10;
barHeight = 100;
// Farbe der Balken
barColor = 0x000000;
barBorderColor = x000000;
// Abstand zw. den Balken
barSpace = 2;
// behelfsvariablen
currentX = 0;
// Leere Mc für Equalizer erzeugen
equalizerMc = createEmptyMovieClip('Equalizer_mc',100);
// Balken erzeugen
for (i=0;i<barNum;i++) {
  barMc = equalizerMc.createEmptyMovieClip('Bar'+i+'_mc',i);
  // kleines Rechteck zeichnen
  with (barMc) {
    lineStyle(0,barBorderColor,100);
    beginFill(barColor,100);
    lineTo(barWidth,0);
    lineTo(barWidth,barHeight);
    lineTo(0,barHeight);
    lineTo(0,0);
    endFill();
  }
  // Balken-XPos anpassen
  with (barMc) {
    _x = currentX;
    // und Behelfsvariable erhöhen ..
    currentX +=  _width+barSpace;
    // gleich mal eine zufallhöhe für Balken setzen
    _height = random(barHeight);
    _y = barHeight-_height;
  }
}

Ok, soweit so gut, jetzt hatten wir es doch von Events ... das onClipEvent kannst du eigentlich (fast) vergessen, weil man damit nur direkt auf Instanzen von MCs und Buttons programmieren kann. Viel besser hingegen ist alles in einem Schlüsselbild zu halten, damit die Übersicht gewahrt bleibt und man sich nicht die Codefragmente zusammensuchen muss.

Hier die onEnterFrame-Lösung (auf einer eigenen Mc, der sog. CtrlMc):
PHP:
// ### onEnterFrame-Methode (CtrlMc) ###
// Kontrollvariable für Geschwindigkeit, desto größer deso langsamer ...
frameReductor = 5;
tmpFrame = 0;
// ctrlMc erzeugen, und onEnterFrame definieren
ctrlMc = equalizerMc.createEmptyMovieClip('As_mc',90);
ctrlMc.onEnterFrame = function() {
  // prüfen ob es schon soweit ist die Position der Balken zu ändern
  if (tmpFrame == frameReductor) {
    // reset der tmpVar
    tmpFrame = 0;
    // Höhe für alle Balken zufällig erzeugen
    for (i=0;i<barNum;i++) {
      // Pointer auf den aktuellen Balken setzen
      currentMc = this._parent['Bar'+i+'_mc'];
      with (currentMc) {
        _height = random(barHeight);
        _y = barHeight-_height;
      }
    }
  }
  // tmpVar für Geschwindigkeit erhöhen
  tmpFrame++;
}

Ich persönlich finde das hingegen so schöner, mit der setInterval-Lösung:
PHP:
// ### setInterval-Methode ###
// ms bis zur nächsten aktualisierung ...
barTime = 100;
barInt = setInterval(function() {
  for (i=0;i<barNum;i++) {
    // Pointer auf den aktuellen Balken setzen
    currentMc = equalizerMc['Bar'+i+'_mc'];
    with (currentMc) {
      _height = random(barHeight);
      _y = barHeight-_height;
    }
    }
},barTime);

ich hoffe das hilft Dir ein wenig weiter, die Projektfiles hab ich mal angehängt ^^

viel Spaß damit, gruß irresponder
 
ok... vielen dank erstmal.
Php ist zwar überhaupt nich meine Stärke =) aber ich denke dank deiner Files das ich da durchsteige..

Vielleicht sollte ich wohl mit php anfangen, scheint irgendwie praktischer zu sein als ein Buch nur über AScript zu lesen.. naja

Greetz²All
 
Wegen dem "php" oben über dem Script vermutlich. ;)

@Daensch
Das "php" über dem Script zeigt nur an, dass jetzt ein formatiertes Script kommt. Ist ursprünglich (soweit ich weiß, lass mich gerne korrigieren) ein php-Script-"Highlighter" für Foren und deshalb steht das automatisch oben drüber.
Aber bei dem was Irresponder schreibt handelt es sich natürlich schon um Actionscript. Also sich davon nicht verwirren lassen. :)

Gruß
Rena
 
Zurück