Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-05-2009, 09:46   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 56
Unhappy Dynamisch erstellte mcs überlappen sich

Hallo!

Ich habe folgendes Problem:
Ich hab ein Flash file in dem 1000 namen random auf einer bühne platziert werden und dann der reihe nach eingefadet werden... Natürlich überlappen sich die erstellten mcs dabei... und jetzt zu meiner Frage:

Wie lässt sich dies vermeiden? Klar ist, dass 1000 namen nicht alle auf einmal auf der stage platz haben ohne sich zu überschneiden... Dh man müsste eine art hitTest machen wenn die bilder einfaden...

Wäre toll wenn mir da jemand weiterhelfen könnte!

lg,
ralph

ich stell das fla dazu (flas sagen mehr als worte )
Angehängte Dateien
Dateityp: zip namen_v2.fla.zip (72,1 KB, 3x aufgerufen)
upward ist offline   Mit Zitat antworten
Alt 26-05-2009, 10:10   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi,
du könntest dir z.B. ein array anlegen in das du immer alle grad sichtbaren mc's mit push reinlegst. wenn der mc futsch ist muss er natürlich auch wieder aus dem array raus... hintergrund ist, wenn du alle sichtbaren mc's beisammen hast, also im array, kannste ja z.B. mit einer schleife dieses array durchlaufen und dann mit einem hitTest checken ob der "neue" mc einen der "alten" berührt...

cheers, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 26-05-2009, 10:20   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 56
Hi salazar!

Danke für deinen Hint! Das is ein guter Tipp! Die frage is wie das funktioniert wenn sich das array ja ständig ändert... dh es kommt alle 0,5 sec. oder so ein mc dazu... wann mach ich dann den hittest mit dem array? Das check ich nicht ganz...

lg,
ralph
upward ist offline   Mit Zitat antworten
Alt 26-05-2009, 10:56   #4 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hey ho,
ich würde eher den gesammtaufbau ein wenig abwandeln. weil... ca. 1000 movieclips auf die bühne zu klatschen ganz schön auf die performance gehen kann. zudem haste so ja das problem, dass alle clips schon so liegen wie sie nunmal per random abgelegt worden sind. da wird dir der hitTest auch nur noch sagen, true, oder false... aber wie gesagt. platziert ist der clip dann ja schon.

cheers, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 26-05-2009, 11:05   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 56
danke! Das versuch ich gerade das so zu machen:

Ich attache die mcs nach der reihe und pushe die ids in einen Array... Jetzt hab ich probleme wie ich das array limitiere (auf ca 15 einträge oder so) damit das hittesten auch sinn macht... Hast du eine ahnung wie das geht?

Danke nochmal!

Ralph
upward ist offline   Mit Zitat antworten
Alt 26-05-2009, 11:10   #6 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi,
kannst statt id's auch gleich die mc's ins array pushen
aber davon mal abgesehen....
sehr sehr viele wege führen nach rom. bau erstmal um dein script das nicht zu begin alle mc's auf der stage liegen und poste danach nochmal dein aktuelles script.

Zitat:
Jetzt hab ich probleme wie ich das array limitiere (auf ca 15 einträge oder so) damit das hittesten auch sinn macht... Hast du eine ahnung wie das geht?
vielleicht ist dein ansatz auch immer noch falsch
schreib dir doch eine function die einfach schaut die die length vom array ist... wenn die length z.B. kleiner 15 ist werden neue mc's erzeugt. und wenn nicht dann halt nicht.

cheers, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 26-05-2009, 14:08   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 56
Ok - hier mal das script...
Dazu ist noch zu sagen, dass ich die movieclips nach dem fadeout wieder lösche mit "this.removeMovieClip()"... Er schreibt auch schon brav alle ids in das array...

lg,
ralph




this.timer_mc.onEnterFrame = function() {
this.t += 1;
if (this.t>=20) {
_root.id += 1;
_root.checkerArray.push(_root.id);
trace(checkerArray);
this.t = 0;
_root.attachMovie("name_mc","name"+_root.id+"_mc", 1000+_root.id);
_root["name"+_root.id+"_mc"].id = _root.id;
_root["name"+_root.id+"_mc"]._x = random(924)+10;
_root["name"+_root.id+"_mc"]._y = random(456);
_root["name"+_root.id+"_mc"].dername.text = _root.wordList[_root.id];
_root["name"+_root.id+"_mc"].dername.autoSize = "left";
_root["name"+_root.id+"_mc"]._xscale = 80+random(100);
_root["name"+_root.id+"_mc"]._yscale = _root["name"+_root.id+"_mc"]._xscale;
_root["name"+_root.id+"_mc"].onEnterFrame = function() {
if (this._x+this._width>1024) {
this._x = random(500);
}
if (this._y<0) {
this._y = random(456);
}
if (this.id == _root.id) {
this.gotoAndPlay(2);
//delete this.onEnterFrame;
}
};
}
};
upward ist offline   Mit Zitat antworten
Alt 26-05-2009, 14:47   #8 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Post

hm,
sorry, aber dein ansatz ist immer noch recht umständlich.
hab dir mal eine ganz andere lösung in as2 erstellt!
einfach den neuen code nehmen und den alten damit erstzen... aber natürlich nicht dein wordList array löschen

PHP-Code:
var enterFrameHolder:MovieClip this.createEmptyMovieClip"enterFrameHandler" ,this.getNextHighestDepth() );
var 
id:Number 0;

var 
intervalHolder:Number;
var 
intervalSpeed:Number 500;

var 
clipHolder:Object = new Object();

intervalHolder setInterval( function():Void {
                            
    var 
clip:MovieClip _root.attachMovie"name_mc" ,"name" id "_mc" _root.getNextHighestDepth() );
        
clip.id id;
        
clip.dername.text wordListclip.id ];
        
clip.dername.autoSize "left";
        
clip._xscale clip._yscale 80 Math.roundMath.random() * 100 );
        
    
findPosclip );

    
clipHolderclip.id ] = clip;
        
    
id++;
    
    
//if( id >= wordList.length ) clearInterval( intervalHolder );
                                        
}, intervalSpeed );

enterFrameHolder.onEnterFrame = function():Void {
    
    for ( var 
str:String in clipHolder ) {
        
        var 
clip:MovieClip clipHolderstr ];
            
clip.nextFrame();
        
        if ( 
clip._currentframe == clip._totalframes ) {

            
delete clipHolderclip.id ];
            
            
clip.removeMovieClip();
            
        }
        
    }

}

function 
findPosclip:MovieClip ):Void {
    
    
clip._x Math.roundMath.random() * 924 ) + 10;
    
clip._y Math.roundMath.random() * 456 );
    
    for ( var 
str:String in clipHolder ) {
        
        var 
clipOther:MovieClip clipHolderstr ];
        
        if ( 
clip.hitTestclipOther ) ) findPosclip );

    }


cheers, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (26-05-2009 um 14:49 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 26-05-2009, 15:44   #9 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 56
Wow - was soll ich sagen - ich werd mir das gleich mal reinziehen!!!! Vielen vielen dank! Solltest du mal ein screendesign brauchen oder sonst wo hilfe... meld dich upward(atttt)gmx.at!

Danke nochmal und schönen Tag noch!

Ralph
upward ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
hittest

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 01:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele