Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-12-2004, 13:22   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Linie zeichnen und Fläche füllen

Wiedereinmal habe ich ein Problem.
Ich habe eine Klasse schaltknopf erstellt. Dieser Klasse werden aus einem XML File verschiedene Eigenschaften zugeordnet. Unter anderem auch Koordinaten für das zeichnen einer Schaltfläche. Diese Koordinaten werden in einem Array nach dem Auslesen aus der XML Datei zwischengespeichert.

Ich habe zum Darstellen des Buttons eine Methode darstellen in der Klasse schaltknopf erstellt. Diese wird auch ohne Probleme aufgerufen. Es wird jedoch keine Linie bzw. Füllung gezeichnet, obwohl laut trace Ausgabe die Koordinaten einwandfrei übergeben werden. Wo liegt hier der Fehler? Kann es sein das with in einer Methode nicht richtig funktioniert?

Hier der Code:
PHP-Code:
// Methode darstllen -> Button wird Dargestellt.

schaltknopf.prototype.darstellen = function () {
    
    
_root.createEmptyMovieClip("testmc",1);
            
_root.testmc.onRelease = function () {
                
this.getURL("http://www.way2web.at",_blank);
            }
            
_root.testmc.onRollOver = function () {
                
this._alpha 100;
            }
            
_root.testmc.onRollOut = function () {
                
this._alpha 100;
            }

        for (var 
0i<this.gesamtcordsi++) {
            
//X-Position
            
var this.cords_x[i];
            
//trace("X"+i+"="+this.cords_x[i]);
            //Y-Position
            
var this.cords_y[i];
            
//trace("Y"+i+"="+this.cords_y[i]);
    
            
with (_root.testmc){
                    
this.lineStyle(2,0xff0000,100);
                        if (
== 0) {
                        
trace("start: "+x+" "+y);
                        
this.moveTo (x,y);
                        
this.beginFill (0x009900,50);
                    } else {
                        
this.lineTo (x,y);
                        
trace("Linie: "+x+" "+y);
                    }
                    
                    if (
== this.gesamtcords-1) {
                        
this.endFill();
                        
trace("END");
                    } 
                }
        }        
}; 
Wenn ich die Funktion darstellen nicht innerhalb der Klasse verwende funktioniert die Darstellung! Komisch.

Danke für die Hilfe bereits im Voraus.
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 13:42   #2 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

werden deine gesamtcords richtig an die function übergeben?

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 29-12-2004, 13:44   #3 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
innerhalb eines with blockes schreibt man kein this... denn das zeigt nun in deinem fall nicht auf _root.testmc sondern auf die instanz der class schaltknopf
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 29-12-2004, 13:50   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
@Scrawer Die Sache mit dem this habe ich endeckt. Aber leider war das nicht die Lösung. Ich denke jedoch, dass das Problem irgendetwas mit dem Pfad zutun haben könnte.

@fraggle_two Die gesamtcords werden richtig übergeben. Die Anzahl der Koordinaten stimmt also mit denen im XML File überein.
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 13:59   #5 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
nein sonnst sehe ich keinen fehler... muss gehen.... du must nur aufpassen durch deine if else im with block... das this.gesamtcords dort so auch nicht greifbar ist....
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:19   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Die gesamtcords werden richtig ausgebeben, wenn ich dies über trace in der letzten if anweisung ausgeben lasse.
Leider wird jedoch nichts angezeigt. Ich verstehe eigentlich auch nicht wieso. Die X,Y Koordinaten die ich in der if-else Anweisung ausgeben lasse sind korrekt. Es scheint als ob der moveto und lineto Befehl nicht ausgeführt würden. Wie kann ich das kontrollieren?
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:37   #7 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
wie sieht denn dein abgeänderter code nun aus ?
hast du die this vor den moveTo auch entfernt ?

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:38   #8 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
trace dir mal den typen der koords...das kommt doch aus´m xml-file, oder?!
ich könnt wetten, dass sind strings...und kein typ Number...

trace mal mit typeof

das umwandeln dürfte dann ja kein prob darstellen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:44   #9 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Hier der derzeitige Code:

PHP-Code:
// Methode darstllen -> Button wird Dargestellt.

schaltknopf.prototype.darstellen = function () {
    
    
_root.createEmptyMovieClip("testmc",1);
            
_root.testmc.onRelease = function () {
                
getURL("http://www.way2web.at",_blank);
            }
            
_root.testmc.onRollOver = function () {
                
_alpha 100;
            }
            
_root.testmc.onRollOut = function () {
                
_alpha 100;
            }

        for (var 
0i<this.gesamtcordsi++) {
            
//X-Position
            
var this.cords_x[i];
            
trace(typeof(x));
            
//Y-Position
            
var this.cords_y[i];
    
            
with (_root.testmc){
                    
lineStyle(2,0xff0000,100);
                        if (
== 0) {
                        
trace("start: "+x+" "+y);
                        
moveTo (x,y);
                        
beginFill (0x009900,50);
                    } else {
                        
lineTo (x,y);
                        
trace("Linie: "+x+" "+y);
                    }
                    
                    if (
== gesamtcords-1) {
                        
endFill();
                        
trace(gesamtcords);
                    }
                }
        }        
}; 
@kelor mit trace(typeof(x)) erhalte ich Object als wert! Ich habe allerdings auch schon versucht in moveto und lineto von hand zahlen einzusetzen. Leider erhielt ich auch hier kein Ergebnis!
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:55   #10 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
davon mal ab, dass ich nie mit with arbeite wegen der scopeverschiebung, MUSS der typ 'number' ergeben.

ActionScript:
  1. var x = 5;
  2. trace(typeof(x));
  3.  
  4. // ausgabe:  number
  5.  

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:58   #11 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Wie kann man einen Type umwandeln? toNumber ?
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 14:58   #12 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
typisier doch mal deine variablen, dann müsstest du auf jeden fall
mal einen compiler-error bekommen, wenn x keine nummer ist...

wie ist dein koordinaten-array aufgebaut ?

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 29-12-2004, 15:04   #13 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ja das ändern des typs soltle mit

ActionScript:
  1. var a = '23';
  2. var b = Number(a);
  3. trace(b+' || '+(typeof(b)));
  4.  
  5. //ausgabe :  23 || number
  6.  





greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 29-12-2004, 15:05   #14 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Es sind zwei Arryays. Eines für X und eines für Y. Indizierung erfolgt dann beim durchlauf durch i. Also so:

for (i=0; i<gesamtcords; i++) {

var x = cords_x[i];
var y = cords_y[i];

}

Würde es etwas bringen, wenn ich es so schreibe?

for (i=0; i<gesamtcords; i++) {

var x:Number = cords_x[i];
var y:Number = cords_y[i];

}

Wenn ich es richtig verstanden habe weiße ich durch den Doppelpunkt den Datentyp zu. Ist das richtig?
Chris M. ist offline   Mit Zitat antworten
Alt 29-12-2004, 15:10   #15 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Geschafft!!

Das Problem ist gelöst. Es war tatsächlich der Datentyp. Ich habe beim auslesen aus der XML Datei nicht toString verwendet, somit bleibt das ausgelesene Flashintern ein Objekt!
Jetzt wandle ich den String dann noch in eine Number um und schon hat es geklappt!

Herzlichen Dank an alle die mir bei der Lösungsfindung geholfen haben.
Chris M. 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:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele