AdesFormMail Problem

Dagobert

Mitglied
Hallo!

Ich versuche das Form Mail Script von Adesdesign in meinen Film unterzubringen. Leider gibt es ein paar Probleme, da dass Script nur für altere Flash Versionen existiert, nicht für meine Ver. 8 Pro. Folgende Fehlermeldung erhalte ich:

Der Bezeichner 'color' wird zur Laufzeit nicht in das integrierte Objekt 'Color' aufgelöst.
colorRequired = new color (bg_name);

Kann mir jemand sagen was sich bezüglich des colorRequired Befehls in Flash 8 geänder hat

Schöne Grüße
 
Hi,

"colorRequired" ist keine Methode oder Eigenschaft des Flashplayers, sondern ein willkürlich gewählter Variablenname.

Dein Problem resultiert daraus, dass ab Flashplayer 7 bei Klassen, Methoden und Eigenschaften auf Groß- und Kleinschreibung geachtet wird (Klassen beginnen immer mit einem Großbuchstaben). Richtig wäre demnach:
Code:
colorRequired = new Color (bg_name);

Gruß
.
 
Hallo!

Der erste Fehler ist entdeckt und gebannt, der Player 8 meldet nur keine Fehler mehr, wenn "Color" Groß geschrieben wird. Trotzdem funktioniert das Script bisher nur im alten Player. Hier mal der Code, der auf dem Send Button liegt:

Code:
on (press) {
	initial_name = "0";
	initial_comment = "0";
	if (Number(length(name))>=1) {
		initial_name = "100";
		colorRequired = new Color (bg_name);
		colorRequired.setRGB(0xF1F3F3);
	} else {
			colorRequired = new Color (bg_name);
			colorRequired.setRGB(0xFFECE7);
	}
	
	if (Number(length(comment))>=1) {
		initial_comment = "100";
		colorRequired = new Color (bg_comment);
		colorRequired.setRGB(0xF1F3F3);
	} else {
			colorRequired = new Color (bg_comment);
			colorRequired.setRGB(0xFFECE7);
	}
	
String.prototype.isEmail = function() {
    var ref = arguments.callee;
    if(this.indexOf("@") == -1) return false;
    if(!isNaN(this.charAt(0))) return false;
    var email, user, domain, user_dots, domain_dots;
    if((email = this.split("@")).length == 2) {
        if((domain = email[1]).split(".").pop().length > 4) return false;
        if(domain.split(".").length < 2) return false;
        if((user = email[0]).indexOf(".") && domain.indexOf(".")) {
            if(user.length == 1 || domain.length == 1) return false;
            if(domain.lastIndexOf(".") > domain.length-3) return false;
            for(var c, t, i = (user_dots = user.split(".")).length; i--;) {
                c = user_dots[i]; t = !ref.$_text.call(c, "-", ".", "_");
                if(t || !isNaN(c)) return false;
            };
            for(var c, t, i = (domain_dots = domain.split(".")).length; i--;) {
                c = domain_dots[i]; t = !ref.$_text.call(c, "-", ".");
                if(t || !isNaN(c)) return false;
            };
        } else return false;
    } else return false;
    return true;
};
String.prototype.isEmail.$_punctuation = function() {
    if(this == "") return false;
    for(var i = arguments.length; i--;) {
        if(this.indexOf(arguments[i]) == 0) return false;
        if(this.indexOf(arguments[i]) == this.length-1) return false;
    };
    return true;
};
String.prototype.isEmail.$_text = function() {
    var ref = arguments.caller;
    if(!ref.$_punctuation.apply(this, arguments)) return false;
    var others = arguments; var checkOthers = function(str) {
        for(var i = others.length; i--;) if(str == others[i]) return true;
        return false;
    };
    for(var c, alpha, num, i = this.length; i--;) {
        c = this.charAt(i).toLowerCase();
        alpha = (c <= "z") && (c >= "a");
        num = (c <= "9") && (c >= "0");
        if(!alpha && !num && !checkOthers(c)) return false;
    };
    return true;
};

// Usage Example

var _trace = function(address) {
    return "(" + address + "): " + address.isEmail();
};

	var checkEmail = function(address) { 
    return address.isEmail();

};
	
if (checkEmail(email)) {
		colorRequired = new Color (bg_email);
		colorRequired.setRGB(0xF1F3F3);
	} else {
			colorRequired = new Color (bg_email);
			colorRequired.setRGB(0xFFECE7);
	}	
}


on (release) {
	if (Number(initial_name) == 100 and Number(initial_comment) == 100 and (checkEmail(email)) == true) {
		loadVariablesNum("form.php", 0, "POST");
		gotoAndStop("thanks");
	}
}

Ich weiß es ist ein langes Ding, aber hat jemand einen Vorschlag?

Grüße
 
Hi,

generell musst Du prüfen, ob die Schreibweisen aller Methoden korrekt sind:
Code:
function foo() {
  trace("bar");
}

Foo();
So etwas hätte im Flashplayer 6 noch funktioniert; ab Flash 7 nicht mehr (Du kannst den Film auch mal testweise für Flashplayer 6 exportieren - funktioniert die Komponente dann immer noch nicht, liegt es nicht an der Schreibweise).

Ich vermute ein Adressierungsproblem: Das Script geht davon aus, dass es sich auf der Hauptzeitleiste der Stufe 0 befindet - wie und wo bringst Du die Komponente denn in Deinem Film unter?

Gruß
.
 
So, bin nun ein Stück weiter. Die Überprüfung des Email Feldes funktioniert einwandfrei, lediglich hier:

Code:
if (Number(length(name))>=1) {
		initial_name = "100";
		colorRequired = new Color (bg_name);
		colorRequired.setRGB(0xF1F3F3);
	} else {
			colorRequired = new Color (bg_name);
			colorRequired.setRGB(0xFFECE7);
	}

muss noch ein Fehler stecken. Die Überprüfung wird irgendwie übersprungen, auch wenn das Feld leer gelassen wird. Weiß jemand Rat?

Gruß
 
Zuletzt bearbeitet:
Hi,

ich bin nicht sicher, was folgendes Konstrukt soll:
Code:
if (Number(length(name))>=1)
Möglicherweise ist dieses gemeint:
Code:
if (name.length >= 1)

Gruß
.
 
Zurück