Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-09-2005, 13:14   #1 (permalink)
Flash Newbie
 
Benutzerbild von mfeldheim
 
Registriert seit: Aug 2005
Beiträge: 25
Exclamation yugop problem... kann mir jemand helfen?

Hallo zusammen, habe ein kleines yugop gebastelt und habe einige Fragen hierzu..

Meine Fragen:

1. Warum wird der dynamische Text immer nur an einer Stelle sehr kurz angezeigt?
2. Wie kann ich den dynamischen Text mit der Variable description füllen?
3. Warum "ruckelt" die Animation, wie kann ich diese flüssiger laufen lassen?
4. Anstatt die Rotation durch die Mausposition zu bestimmen, würde ich diese gerne mit dem Scrollrad steuern.
Wie müsste ich den im Code ausgeklammerten MouseWheel listener verwenden, damit mit einer Rollbewegung des Mausrades zum nächsten Bild gedreht wird?

5. Wenn ich die Bilder aus der XML Datei lade, bleiben diese in Originalgröße, verändere ich diese mit img._height / img._width stimmt das ganze yugop nicht mehr.. an den 4 absoluten Winkeln 0,90,180,270 werden die Bilder dann verzogen..
an was kann das liegen?

Vielen Dank für eure Hilfe

Michel
Angehängte Dateien
Dateityp: zip rotate.zip (14,0 KB, 33x aufgerufen)
__________________
* FlashVars Tutorial

Geändert von mfeldheim (17-09-2005 um 13:17 Uhr)
mfeldheim ist offline   Mit Zitat antworten
Alt 17-09-2005, 19:22   #2 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb Zu 1. "... Text wird nur kurz eingeblendet"

Das die Schrift nur kurz eingeblendet wird, liegt daran, dass sie nicht eingebettet ist. Das Problem behebst Du so:

1. doppelklick in der Bibliothek auf MovieClip: "frame"
2. singleclick auf das Textfeld: "desc"
3. in den eigenschaften des textfeldes den button "Zeichen" anwählen
4. radiobutton "Bereiche angeben"
5. deine Zeichen angeben, fertig.

Nun siehste auch den Text, und das immer...

den rest schau ich mir gerade an...
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (17-09-2005 um 19:36 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 17-09-2005, 19:31   #3 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb Zu 2. "...Text mit der Variable description füllen"

So bekommst du den Beschreibungstext des Bildes in dein Menue. Vorausgesetzt, die Schriften sind eingebettet. Die entsprechenden Zeilen sind mit komment. versehen.
PHP-Code:
MovieClip.prototype.yugop = function(imglistdescriptionposXposYalpharadiusrotate) {
    var 
angle 0;
    var 
images = [];
    var 
img;
    
this._x posX;
    
this._y posY;
    
this._alpha alpha;
    for (var 
0i<imglist.lengthi++) {
        
img this.attachMovie("bildrahmen""img"+ii);
        
// description einfügen -------------------------------------
        
img.desc.text description[i];
        
// ----------------------------------------------------------
        
img.wphase 2*Math.PI/imglist.length*i;
        
img.container.loadMovie(imglist[i]);
        
images.push(img);
    }
    
this.onEnterFrame = function() {
        
angle += center._ymouse/rotate;
        if (
angle>=2*Math.PI) {
            
angle -= 2*Math.PI;
        }
        if (
angle<0) {
            
angle += 2*Math.PI;
        }
        for (var 
0i<images.lengthi++) {
            
img images[i];
            
img._y radius*Math.cos(img.wphase+angle);
            
img._x radius*Math.sin(img.wphase+angle);
            
r_angle = (Math.atan(img._y/img._x)/Math.PI)*180;
            if (
img._x>=0) {
                
img._rotation r_angle;
            }
            if (
img._x<0) {
                
img._rotation r_angle+180;
            }
            if (
img._y>=0) {
                
img._height 155;
                
img._width 155;
            } else {
                
img._height 150;
                
img._width 150;
            }
            
img.onRollOver = function() {
            };
        }
    };
};
// Bild-Dateien
function loadXML(loaded) {
    if (
loaded) {
        
xmlNode this.firstChild;
        
imagelist = [];
        
description = [];
        
total xmlNode.childNodes.length;
        for (
i=0i<totali++) {
            
imagelist[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
            
description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
        }
        
// dummy array entfernen, brauch ja keiner, da es über's xml gesteuert und gefüllt wird ----
        
center.yugop(imagelistdescription5005001003005000);
    } else {
        
content "file not loaded!";
    }
}
xmlData = new XML();
xmlData.ignoreWhite true;
xmlData.onLoad loadXML;
xmlData.load("images.xml"); 

shorty
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (17-09-2005 um 19:45 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 17-09-2005, 20:41   #4 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb Zu 3 & 4.

Warum das bei dir ruckelt? Keine Ahnung, bei mir schnurrts wie n kätzchen ... Das wird aber bei dir wohl daran liegen, das ein onEnterFrame Evbent permanent ausgefürt wir, und in ihm, pro durchlauf noch ne Schleife. Das kannst Du aber Scripttechnisch, soweit ich das bis hier beurteilen kann nicht abschalten, denn dann würde das Menü nicht mehr "rund" laufen Wirst du wohl mit leben müssen...

Dein Mäuschen aktivierst Du so:
PHP-Code:
// MouseWheel ---------------------------------
var mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
    
center._rotation += delta*10;
    
};
Mouse.addListener(mouseListener); 
Achte aber darauf, folgende Zeilen im Prototypen zu entfernen, oder Auszukommentieren.
PHP-Code:
        /*  Rotation per Mouse x & Y deaktivieren ---------------------
        angle += center._ymouse/rotate;
        if (angle>=2*Math.PI) {
            angle -= 2*Math.PI;
        }
        if (angle<0) {
            angle += 2*Math.PI;
        }
        ------------------------------------------------------------- */ 
Vollständig siehts ei mir jetzt so aus, obwohl die positionsbestimmung per Wheel schei$$e aussieht, find ich
PHP-Code:
MovieClip.prototype.yugop = function(imglistdescriptionposXposYalpharadiusrotate) {
    var 
angle 10;
    var 
images = [];
    var 
img;
    
this._x posX;
    
this._y posY;
    
this._alpha alpha;
    for (var 
0i<imglist.lengthi++) {
        
img this.attachMovie("bildrahmen""img"+ii);
        
// description einfügen -------------------------------------
        
img.desc.text description[i];
        
// ----------------------------------------------------------
        
img.wphase 2*Math.PI/imglist.length*i;
        
img.container.loadMovie(imglist[i]);
        
images.push(img);
    }
    
this.onEnterFrame = function() {
        
/*  Rotation per Mouse x & Y deaktivieren ---------------------
        angle += center._ymouse/rotate;
        if (angle>=2*Math.PI) {
            angle -= 2*Math.PI;
        }
        if (angle<0) {
            angle += 2*Math.PI;
        }
        ------------------------------------------------------------- */
        
for (var 0i<images.lengthi++) {
            
img images[i];
            
img._y radius*Math.cos(img.wphase+angle);
            
img._x radius*Math.sin(img.wphase+angle);
            
r_angle = (Math.atan(img._y/img._x)/Math.PI)*180;
            if (
img._x>=0) {
                
img._rotation r_angle;
            }
            if (
img._x<0) {
                
img._rotation r_angle+180;
            }
            if (
img._y>=0) {
                
img._height 155;
                
img._width 155;
            } else {
                
img._height 150;
                
img._width 150;
            }
            
img.onRollOver = function() {
                
// mach was ...
            
};
        }
    };
};
// Bild-Dateien
xmlData = new XML();
xmlData.ignoreWhite true;
xmlData.onLoad = function(loaded) {
    if (
loaded) {
        
xmlNode this.firstChild;
        
imagelist = [];
        
description = [];
        
total xmlNode.childNodes.length;
        for (
i=0i<totali++) {
            
imagelist[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
            
description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
        }
        
center.yugop(imagelistdescription5005001003005000);
    } else {
        
content "file not loaded!";
    }
};
xmlData.load("images.xml");
// MouseWheel ------------------------------------------------------------
var mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
    
center._rotation += delta*10;
    
};
Mouse.addListener(mouseListener); 
Die ehemalig allein stehende onLoad Function, habe ich direkt ins XML Objekt geschrieben, also nicht wunder...



shorty
peace & fette beute
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (17-09-2005 um 20:43 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 17-09-2005, 20:51   #5 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Exclamation Zu 5. "...5. Wenn ich die Bilder aus der XML Datei lade"

Keine Ahnung, was Du meinst, bei mir lufts tadellos. Im Anhang das vollständige Yug.

den rest bekommste alleine hin, oder drückst einfach mal F1 ...
Angehängte Dateien
Dateityp: zip Yugop Rotation (neu).zip (36,4 KB, 55x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 19-09-2005, 15:20   #6 (permalink)
Flash Newbie
 
Benutzerbild von mfeldheim
 
Registriert seit: Aug 2005
Beiträge: 25
Wow.. danke für eure tolle Hilfe, ist ja wesentlich einfacher als ich mir vorgestellt hatte.

wenn ich das gesamte mc center mit dem Mouserad drehe, wie shortybmc das vorgeschlagen hatte

ActionScript:
  1. var mouseListener = new Object();
  2. mouseListener.onMouseWheel = function(delta) {
  3.     center._rotation += delta*10;
  4.      
  5. };
  6. Mouse.addListener(mouseListener);
erfüllt das zwar den Zweck, sieht aber ein wenig doof aus finde ich.
Ich würde gerne erst beschleunigen, dann wieder abbremsen wenn das Ziel der Rotation erreicht wurde.
Ich kann in die Funktion, die mit dem Eventlistener mouseListener.onMouseWheel = function () aufgerufen wird ja theoretisch alles mögliche reinschreiben.
Ist es sehr aufwändig, die rotation zu animieren?
Wie könnte ich das machen um auch nur delta*10 zu rotieren, aber eben beschleunigt und wieder abgebremst?
Bzw.. delta*10 ist eine konstante Zahl, der Winkel würde dann ja bei z.b. 15 Bildern nicht mehr stimmen oder doch?
Wie bekomme ich den Wert imagelist.length in die funktion? Damit könnte ich dann den Winkel zwischen zwei Bildern jeweils errechnen.
__________________
* FlashVars Tutorial

Geändert von mfeldheim (19-09-2005 um 15:22 Uhr)
mfeldheim 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 14:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele