Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-01-2007, 11:20   #1 (permalink)
Give me a gun!
 
Benutzerbild von Buscemi
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 141
Array auslesen wiedermal

hallo,

ich möchte eine Zeichnung per PHP abspeichern. Das klappt auch schon ganz gut. Allerdings sieht die Zeichnung nach dem Auslesen aus der txt-Datei etwas verändert aus. Es wird eine Verbindungslinie eingezeichnet, wo man beim Zeichnen "den Stift abgesetzt hat". Ich glaube, mit lineTo und moveTo stimmt was nicht. Ich weiss nicht, wo der Fehler liegt. Kenne mich nicht gut mit PHP aus.

Code:
//-------------------------------------------------//
//              ZEICHENEBENE                       //
//-------------------------------------------------//

//Zeichenebene erstellen
function createPaintArea(){
    this.createEmptyMovieClip("pa",0);
    pa.lineStyle(1.8,0x000000,100);
        
    //Mausklick -> moveTo -> Beginn der Zeichnung
    pa.onMouseDown = function(){
        xcoords.push(this._xmouse);
        ycoords.push(this._ymouse);
        zinfo.push(false);
        this.moveTo(this._xmouse,this._ymouse);
        isPainting = true;
    }
    
    //Mausbewegung -> zeichnen
    pa.onMouseMove = function(){
        if(isPainting){
            xcoords.push(this._xmouse);
            ycoords.push(this._ymouse);
            zinfo.push(true);
            this.lineTo(this._xmouse,this._ymouse);
        }
    }
    
    //Ende der Zeichnung
    pa.onMouseUp = function(){
        isPainting = false;
    }        
}

//-------------------------------------------------//
//              ZEICHENFUNKTIONEN                 //
//-------------------------------------------------//

//Bild wiederherstellen
function repaint(){
    pa.lineStyle(1.8,0x000000,100);
    for(var i = 0; i<xcoords.length; i++){
        if(zinfo[i])
            pa.lineTo(xcoords[i],ycoords[i]);
        else
            pa.moveTo(xcoords[i],ycoords[i]);
    }
}

//-------------------------------------------------//
//             SPEICHERN/LADEN                     //
//-------------------------------------------------//

function sendToPHP(){
    lv = new LoadVars();
    lv.x = xcoords.join(",");
    lv.y = ycoords.join(",");
    lv.z = zinfo.join(",");
    lv.sendAndLoad("savePainting.php",lv,"POST");
}

function loadFromPHP(id){
    lv = new LoadVars();
    lv.id = id;
    lv.sendAndLoad("loadPainting.php",lv,"POST");
    lv.onLoad = function(success){
        if(success){
            xcoords = lv.x.split(",");
            ycoords = lv.y.split(",");
            zinfo = lv.z.split(",");
            repaint();
        }
    }
}
Und hier die PHP-Dateien

Speichern

PHP-Code:
<?PHP
$textdateix 
"xpos.txt";
$textdateiy "ypos.txt";
$textdateiz "zpos.txt";
$fpx fopen("$textdateix""w+");
$fpy fopen("$textdateiy""w+");
$fpz fopen("$textdateiz""w+");
fseek($fpx,0);
fseek($fpy,0);
fseek($fpz,0);
fputs($fpx,$_POST['x']);
fputs($fpy,$_POST['y']);
fputs($fpz,$_POST['z']);
flock($fpy3);
flock($fpx3);
flock($fpz3);
fclose($fpx);
fclose($fpy);
fclose($fpz);
?>
Und laden

PHP-Code:
<?PHP
$textdateix 
"xpos.txt";
$textdateiy "ypos.txt";
$textdateiz "zpos.txt";
$fpxfopen("$textdateix""r+");
$fpy fopen("$textdateiy""r+");
$fpz fopen("$textdateiz""r+");
$getX fgets($fpx40960);
$getY fgets($fpy40960);
$getZ fgets($fpz40960);
fclose($fpx);
fclose($fpy);
fclose($fpz);
echo 
"&x=".$getX;
echo 
"&y=".$getY;
echo 
"&z=".$getZ;
?>
In der Laden-PHP weiss ich auch nicht genau, was die Zahl bei "fgets($fpy, 40960)" bedeutet. Ist das die Anzahl der Einträge, die ausgelesen werden?

Ich würde mich freuen, wenn mir jemand weiterhelfen kann.

Buscemi
Buscemi ist offline   Mit Zitat antworten
Alt 16-01-2007, 08:32   #2 (permalink)
Give me a gun!
 
Benutzerbild von Buscemi
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 141
Wenn ich zu unklar geschrieben habe, bitte fragt. Hier eine Zeichnung, nachdem sie per PHP geladen wurde. Die langen Linien, die möchte ich besiegen..

Linien
Buscemi ist offline   Mit Zitat antworten
Alt 16-01-2007, 09:56   #3 (permalink)
Give me a gun!
 
Benutzerbild von Buscemi
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 141
Okay, es scheint doch nicht am PHP zu liegen.
Die gespeicherten Daten werden korrekt an Flash übergeben.

Code:
function loadFromPHP(id){
    lv = new LoadVars();
    lv.id = id;
    lv.sendAndLoad("loadPainting.php",lv,"POST");
    lv.onLoad = function(success){
        if(success){
            xcoords = lv.x.split(",");
            ycoords = lv.y.split(",");
            zinfo = lv.z.split(",");
			checko = zinfo[0];
            repaint();
        }
    }
}
"checko" gibt ein false zurück. Und false müsste nach diesem AS

Code:
function repaint(){
    pa.lineStyle(1,0x000000,100);
	    for(var i = 0; i<xcoords.length; i++){
        if(zinfo[i])
            pa.lineTo(xcoords[i],ycoords[i]);
        else
            pa.moveTo(xcoords[i],ycoords[i]);
    }
}
dazu führen, dass die Linie nicht gezeichnet wird. Dachte ich. Warum wird sie dann doch gezeichnet?
Buscemi ist offline   Mit Zitat antworten
Alt 16-01-2007, 11:08   #4 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
Moin Buscemi,

aus dem Script das Du gepostet hast, lässt sich kein Fehler erkennen.
Deshalb nur als Tipp: MEHR TRACEN!!

Eine Vermutung wär, daß hier bei "if(zinfo[i])" ein falscher Wert ankommt oder, daß eine Draw Schleife zweimal durchlaufen wird, oder Koordinaten doppelt vorhanden sind....


Bis dann,
querkopf

Edit: grad' fällt mir was auf: "checko = zinfo[0];" erwartest Du da ein Array aus Nullen und Einsen (=> Zahlen)? Da steht nämlich eine Array aus Strings drin. Somit wär' Deine "if(zinfo[i])" immer true! Es sei denn Du änderst die Abfrage zB in "if(zinfo[i] == "1")" oder sowas...
__________________
Alles ist wie immer. Nur schlimmer.

Geändert von querkopf (16-01-2007 um 11:11 Uhr)
querkopf ist offline   Mit Zitat antworten
Alt 16-01-2007, 11:09   #5 (permalink)
* do iT OOP *
 
Benutzerbild von kingschnulli
 
Registriert seit: Jul 2006
Beiträge: 330
Das sieht so aus als wenn da ein moveTo am Anfang fehlt, hab mir jetzt bloß die Zeichnung angesehen aber startest du mit dem Zeichnen auch am richtigen Fleck ?
__________________
Das Geheimnis der Kreativität ist es zu wissen wie du deine Quellen verbirgst

The secret to creativity is knowing how to hide your sources.

Albert Einstein - Genius
kingschnulli ist offline   Mit Zitat antworten
Alt 16-01-2007, 12:05   #6 (permalink)
Give me a gun!
 
Benutzerbild von Buscemi
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 141
Thumbs up

Juchuu!!

Vielen Dank querkopf! In dem array zinfo steht immer false oder true drin. Hab ihn jetzt in Nullen und Einsen umgeändert. Und jetzt funzt es super! In einem Array dürfen wohl nur Zahlen drin stehen? Uiui

Buscemi ist offline   Mit Zitat antworten
Alt 17-01-2007, 15:30   #7 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
nein, in einem Array darf alles drin stehen.
Aber wenn Du die Werte aus php geladen hast sind sie alle Strings und nicht Boolean (was Du in der IF abgefragt hast). Oder um es anders zu formulieren
PHP-Code:
"false" != false 
Bis dann,
querkopf
__________________
Alles ist wie immer. Nur schlimmer.
querkopf 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 10:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele