Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-05-2007, 17:24   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Ort: Bottrop
Beiträge: 121
Kreisförmiger Preloader

Hallo,

Alois hat mal vor einiger Zeit einen kreisförmigen Preloader gepostet.

Kreisförmiger Preloader?!?

Mich interessiert da besonders die Funktion "DrawArc":
PHP-Code:
drawArc = function(xcycr1r2nglstngl
{        
    var 
x2y2xpyplt;        
    
Math.PI/4;        
    
ngl *= Math.PI/180;        
    
stngl *= Math.PI/180;        
    
Math.floor(ngl/t);        
    for (var 
0i<li++) {
        
x2 xc+r1*Math.cos((stngl+t));
        
y2 yc+r2*Math.sin((stngl+t));
        
xp xc+r1*(2-Math.sin((Math.PI-t)/2))*Math.cos((stngl+t/2));
        
yp yc+r2*(2-Math.sin((Math.PI-t)/2))*Math.sin((stngl+t/2));
        
this.curveTo(xpypx2y2);                
        
stngl += t;        
    }        
    
    if (
ngl-l*t>Math.PI/360) {
        
x2 xc+r1*Math.cos((stngl+ngl-l*t));
        
y2 yc+r2*Math.sin((stngl+ngl-l*t));
        
xp xc+r1*(2-Math.sin((Math.PI+ngl-l*t)/2))*Math.cos((stngl+(ngl-l*t)/2));
        
yp yc+r2*(2-Math.sin((Math.PI+ngl-l*t)/2))*Math.sin((stngl+(ngl-l*t)/2));
        
this.curveTo(xpypx2y2);        
    }
}; 
Leider liegt meine Schulzeit schon ein paar Jährchen zurück.
Was muss ich an dem Code ändern, damit drawArc den Kreis auch bei 0 Grad (..bis 360 ) anfängt zu zeichnen ?

Also ich grübel schon über den Code ne ganze Weile, die Funktion zeichnet aber blöderweise das erste Kreissegment immer erst ab 90 Grad ?

So long...

Jemand ne Idee ?
__________________
Schönen Gruß,

Sky
Skydiver2607 ist offline   Mit Zitat antworten
Alt 20-05-2007, 21:28   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
...denkbar einfach, schau Dir den Befehl mal genau an
drawArc(xc, yc, r1, r2, ngl, stngl);
die einzelnen Variablen haben folgende Bedeutung:
xc: Mittelpunkt des Bogens in x-Richtung
yc: Mittelpunkt des Bogens in y-Richtung
r1: Radius des Bogens in x-Richtung
r2: Radius des Bogens in y-Richtung
ngl: Der Winkel des Bogens
stngl: der Startwinkel des Bogens
...ich denke Du hast 'nur' das Problem, daß Du den 'pointer' nicht auf der richtigen Position hast, du musst ihn zuerst mit moveTo auf die Position bringen, von der aus er mit dem Bogen beginnen soll, ein Beispiel:
ActionScript:
  1. //vorher die drawArc-Funktion
  2. //...
  3. this.lineStyle(1);
  4. this.moveTo(50,25);
  5. this.drawArc(50, 50, 25, 25, 45, -90);
  6. //gezeichnet wird ein 45° Bogen ausgehend von der 12-Uhr Position nach rechts
  7.  

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 21-05-2007, 13:11   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Ort: Bottrop
Beiträge: 121
Hi,

Klasse ! Funktioniert...

es lag wohl bei mir an der MoveTo Funktion und an dem fehlenden Startwinkel vom Bogen.

Vielen Dank für deine Hilfe !

Stephan



Zitat:
Zitat von Alois Beitrag anzeigen
...denkbar einfach, schau Dir den Befehl mal genau an
drawArc(xc, yc, r1, r2, ngl, stngl);
die einzelnen Variablen haben folgende Bedeutung:
xc: Mittelpunkt des Bogens in x-Richtung
yc: Mittelpunkt des Bogens in y-Richtung
r1: Radius des Bogens in x-Richtung
r2: Radius des Bogens in y-Richtung
ngl: Der Winkel des Bogens
stngl: der Startwinkel des Bogens
...ich denke Du hast 'nur' das Problem, daß Du den 'pointer' nicht auf der richtigen Position hast, du musst ihn zuerst mit moveTo auf die Position bringen, von der aus er mit dem Bogen beginnen soll, ein Beispiel:
ActionScript:
  1. //vorher die drawArc-Funktion
  2. //...
  3. this.lineStyle(1);
  4. this.moveTo(50,25);
  5. this.drawArc(50, 50, 25, 25, 45, -90);
  6. //gezeichnet wird ein 45° Bogen ausgehend von der 12-Uhr Position nach rechts
  7.  

Gruß

Alois
__________________
Schönen Gruß,

Sky
Skydiver2607 ist offline   Mit Zitat antworten
Alt 24-05-2007, 10:11   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Ort: Bottrop
Beiträge: 121
Hallo Alois,

ich hätte da noch eine Frage.
Und zwar habe ich einen MovieClip gebaut, um den Preloader mehrmals verwenden zu können und nicht jedes Mal denselben Code wiederholen zu müssen. Aber das funktioniert noch nicht so ganz.

PHP-Code:
MovieClip.prototype.getMovie = function (bild_mc:MovieClip,bildname,centerX,centerY){
    var 
color=0x62BF5A;
    var 
c_percent=0;
    
bild_geladen false;
    var 
PContainer:MovieClip this.createEmptyMovieClip("PContainer"this.getNextHighestDepth());
    var 
mein_mcl=new MovieClipLoader ();
    
PContainer.label_txt.multiline true;
    
PContainer.label_txt.wordWrap true;
    
PContainer.label_txt.autoSize true;
    var 
textFormat = new TextFormat ();
    
textFormat.font "Arial";
    
textFormat.size "9";
    
circle_mc._x=centerX-10;
    
circle_mc._y=centerY-10;    
    
        var 
mein_mcl = new MovieClipLoader ();
        
        
mein_mcl.onLoadStart = function (bild_mc)
        {
            var 
loadProgress mein_mcl.getProgress(bild_mc);
        }
        
        
mein_mcl.onLoadProgress = function (bild_mc,loadedBytes,totalBytes) {
            
                
expr Math.round (loadedBytes/totalBytes*100);
                
anteil=loaded/total*360;
                
c_percent ++;
                
str "";
                if (
expr <10str str "  ";
                if ((
expr >= 10) && (expr <100)) str str " ";
                
str=str+expr+" %";
                if (
c_percent == 10) {
                    
color += c_percent;
                    
c_percent 0;
                }
                
this.arcpreload(PContainer,centerX,centerY,loadedBytes,totalBytes,10,10,color);        
                
label_txt.text str;  
                
label_txt.setTextFormat (textFormat);
            }
        
        
mein_mcl.onLoadComplete = function (bild_mc) {
            var 
loadProgress mein_mcl.getProgress (bild_mc);            
            
bild_geladen true;
            if (
loadProgress.bytesLoaded loadProgress.bytesTotal) {
                for (
i=100;i>=0;i--) {
                      
ausgabe_txt._alpha i;}
                
TransitionManager.start(PContainer, {type:Fadedirection:Transition.OUTduration:3easing:None.easeNone});
                
TransitionManager.start(circle_mc, {type:Fadedirection:Transition.OUTduration:3easing:None.easeNone});
                
PContainer.unloadMovie ();
            }
        }
        
        
mein_mcl.onLoadInit = function (bild_mc)
        {
        }
        
        
mein_mcl.onLoadError = function (target,errorCode) {
            
            
trace ("ERR:" errorcode);
        }
        
        
mein_mcl.addListener(this);
        
mein_mcl.loadClip(bildname,bild_mc);
        
}; 
// End Movieclip.prototype 
Ich vermute, da irgend einen Fehler bei der Instanziierung gemacht zu haben.
Wenn ich mit attachMovie den MovieClip auf die Bühne hole, funktioniert da jedenfalls nichts. Idee ?

Vielen Dank im Voraus !
__________________
Schönen Gruß,

Sky
Skydiver2607 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 19:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele