Hallo Leute!
Ich brauche für eine Site einen kleinen Border-swf, der dynamische texte "rumschweben" lässt...ich denke, dass ist mir ganz gut gelungen! Schaut es euch einfach mal an!
Bei dem ganzen Teil ergibt sich aber ein total schlimmes Prob:
Manchmal "taucht" ein text über dem anderen auf, obwohl ich dies mit hittest eigentlich umgehen will! Rein scripttechnisch KANN DAS ABER NICHT SEIN!....schaut mal bitt durch die func() und sagt mir meinen Fehler....(Wenn ihr euch das SWF ansehen wollt, MÜSST ihr es aus der HTML aus ansehen) Drückt dann paarmal F5 und schwupps irgendwann passierts!
Dazu eine frage:
Ist: mc1.hittest(mc2) das Selbe wie mc2.hittest(mc1) ?
Hiermit wird as alles erstellt: (Script ist jetzt wegen der tests natürlich mit vielen überflüssigen Zeilen...hat alles nix gebracht)
ActionScript:
function createmadfield(i, feld) {
// container laden und erstellen
_root.attachMovie("container", "nummer"+i, 10+i);
_root["nummer"+i]._alpha = 0;
_root["nummer"+i].textfeld.autoSize = "center";
_root["nummer"+i].textfeld.text = feld;
_root["nummer"+i].textfeld._x = 0;
_root["nummer"+i].textfeld._y = 0;
_root["nummer"+i].textfeld.textColor = 0xBCBCBC;
_root["nummer"+i].textfeld.selectable = false;
_root["nummer"+i].shader._width = _root["nummer"+i].textfeld._width;
_root["nummer"+i].shader._height = _root["nummer"+i].textfeld._height;
var breaker = 0;
do { // setzen der koordinaten für container und test, dass kein MC da schon liegt! (geht nitt wirklich)
breaker++; // verhindert ne endlosloop
_root["nummer"+i]._x = random((_global.filmbreite-_root["nummer"+i]._width));
_root["nummer"+i]._y = random((_global.filmhoehe-_root["nummer"+i]._height));
} while ((_root["nummer1"].hitTest(_root["nummer2"]) || _root["nummer2"].hitTest(_root["nummer1"])) && breaker<100);
if (breaker == 99) { // total kill, wenns nicht anderst geht bricht die func() ab...
_root["nummer"+i+"neumachen"] = true;
unloadMovie(_root["nummer"+i]);
delete _root["nummer"+i];
return;
} /// ab hier ists ja eigtlich egal und hat mit dem Fehler nix mehr zu tun....
_root["nummer"+i]._alpha = 100;
_root["nummer"+i].onEnterFrame = function() {
this.movefunktion();
if ((this._currentframe<60) && (this.shader._alpha>0)) {
this.shader._alpha -= 1;
} else if ((this._currentframe>80) && (this.shader._alpha<80)) {
this.shader._alpha += 1;
}
if (this._currentframe == this._totalframes) {
delete _root["nummer"+i];
_root["nummer"+i+"neumachen"] = true;
unloadMovie(this);
}
};
}
if (_root.nummer1neumachen != false || _root.nummer2neumachen != false) {
if (!currenttextarray.length) {
currenttextarray = promotexte.slice(0, -1);
currenttextarray.push(promotexte[(promotexte.length-1)]);
}
for (i=1; i<=2; i++) {
var textselect;
textselect = random((currenttextarray.length-1));
_root["textstring"+i] = currenttextarray[textselect];
currenttextarray.splice(textselect, 1);
}
var zufall = random((Math.random()*10));
if ((zufall<=4) && (_root.nummer1neumachen != false) && (!(_root["nummer1"]._name))) {
_root.nummer1neumachen = false;
createmadfield(1, _root["textstring1"]);
}
var zufall = random((Math.random()*10));
if ((zufall>=5) && (_root.nummer2neumachen != false) && (!(_root["nummer2"]._name))) {
_root.nummer2neumachen = false;
createmadfield(2, _root["textstring2"]);
}
}
Grüße,
Daniel