Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-07-2010, 11:04   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 9
Question AS3 - Fehler beim laden 3 verschiedener externer Dateien

Hallo liebe Flash-Freunde,

ich bin hier sehr neu, sowohl im Forum als auch im Bereich Flash.

Durch verschiedene Tutorials hab ich mir eine kleine File zusammengebaut, diese möchte allerdings nicht funktionieren, und ich konnte bisher noch keine Lösung finden.

Meine Flashdatei enthält 3 Buttons, die beim klicken jeweils eine txt-Datei ansteuern. Die txt wird hierbei in ein dynamisches Textfeld geladen.

also Fehlermeldung erhalte ich:

"Load failed: IO error: Error #2032: Stream-Fehler."

mein AS3 Code ist folgender:

Code:
btn_home.buttonMode =
btn_pic.buttonMode =
btn_uns.buttonMode = true;

btn_home.addEventListener(MouseEvent.CLICK, btnClick);
btn_pic.addEventListener(MouseEvent.CLICK, btnClick);
btn_uns.addEventListener(MouseEvent.CLICK, btnClick);
// Function für das MouseEvent;
function btnClick(evt:MouseEvent):void
{
	// Var deklaration
	var txtFile:String = '';
	// Fallunterscheidung für die jeweilige Datei
	switch (evt.target)
	{
		case 'btn_uns' :
			txtFile = 'datei1.txt';
			break;
		case 'btn_home' :
			txtFile = 'datei2.txt';
			break;
		case 'btn_pic' :
			txtFile = 'datei3.txt';
			break;
	}
	// URLRequest für die Textdatei
	var myRequest:URLRequest = new URLRequest(txtFile);
	var myLoader:URLLoader = new URLLoader();
	// Listener für fertig geladen
	myLoader.addEventListener(Event.COMPLETE, completeHandler);
	myLoader.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
	myLoader.addEventListener( HTTPStatusEvent.HTTP_STATUS, handleHttpStatus );
	myLoader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, handleSecurityError );
	myLoader.addEventListener( Event.COMPLETE, handleComplete );

	myLoader.load(myRequest);

}
function handleIOError( event:IOErrorEvent ):void
{
	trace( "Load failed: IO error: " + event.text );
}
function handleHttpStatus( event:HTTPStatusEvent ):void
{
	trace( "Load failed: HTTP Status = " + event.status );
}
function handleSecurityError( event:SecurityErrorEvent ):void
{
	trace( "Load failed: Security Error: " + event.text );
}
function handleComplete( event:Event ):void
{
	trace( "The data has successfully loaded" );
}

function completeHandler(evt:Event):void
{
	// Loader auf das das Event target legen
	var myLoader2:URLLoader = URLLoader(evt.target);
	// Variabeln einlesen
	var myContent:URLVariables = new URLVariables(myLoader2.data);
	// Dyn. Textfeld füllen
	txt.text = myContent.my_Text;
}
ich bedanke mich schonmal im vorraus bei euch für die Hilfe

Beste Grüße raDDe
raDDe ist offline   Mit Zitat antworten
Alt 23-07-2010, 11:25   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434
Der Fehler sagt im Prinzip, dass er die Datei nicht findet, bzw. nicht lesen kann.

Mögliche Ursachen:

-die Dateien sind nicht da wo er sie sucht -> relative angaben in flash beziehen sich immer auf die einbindende HTML Datei, und nicht auf das swf

-ggf. wird txtFile nicht richtig gesetzt, einfach mal mit trace vor dem Laden ausgeben lassen

Wenn das alles nicht hilft, einfach mal in der handleIOError n Breakpoint setzen und schauen, was da noch so an Infos zu bekommen ist.
Lukas78 ist offline   Mit Zitat antworten
Alt 23-07-2010, 11:39   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 9
Zitat:
-ggf. wird txtFile nicht richtig gesetzt, einfach mal mit trace vor dem Laden ausgeben lassen
der Tipp war gut. meine txtFile wurde erst gar nicht gesetzt.

ich hab nochmal das Tutorial angeguckt, was ich zur Erstellung benutzt hab und festgestellt das ich einen kleinen Fehler in meinem Code hatte:
Code:
function btnClick(evt:MouseEvent):void
{
	// Var deklaration
	var txtFile:String = 'aaa';
	// Fallunterscheidung für die jeweilige Datei
	switch (evt.target.name)
	{
		case 'btn_uns' :
			txtFile = 'datei1.txt';
			break;
		case 'btn_home' :
			txtFile = 'datei2.txt';
			break;
		case 'btn_pic' :
			txtFile = 'datei3.txt';
			break;
	}
was nun der genaue unterschied zwischen "evt.target" und evt.target.name" ist, ist mir zwar nicht ganz klar, aber ich kann die erstellte FLA als vorlage benutzen =)

Danke raDDe
raDDe ist offline   Mit Zitat antworten
Alt 23-07-2010, 11:53   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434
Ah ok, das hab ich übersehen, du vergleichst in deinem Script den Button selber mit einem String (durch die Anführungszeichen):

So sollte es auch gehen, vorrausgesetzt, die Buttons sind in der Funktion bekannt:
PHP-Code:
switch (evt.target)
{
    case 
btn_uns:
        
txtFile 'datei1.txt';
        break;
    case 
btn_home:
        
txtFile 'datei2.txt';
        break;
    case 
btn_pic:
        
txtFile 'datei3.txt';
        break;

Lukas78 ist offline   Mit Zitat antworten
Alt 23-07-2010, 12:56   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 9
Danke nochmal für die Hilfe jetzt hab ich es auch verstanden =).

kannst du mir auch gleich die nächste, für mich, unlogische Verhaltensweise erklären =)

PHP-Code:
// Var deklaration
    
var txtFile:String '';
    var 
alreadyLoaded:int 0;
    
// Fallunterscheidung für die jeweilige Datei

    
outer:switch (evt.target)
    {
        case 
btn_uns :
            if (
alreadyLoaded == 1)
            {
                break;
            }
            else
            {
                
txtFile 'datei1.txt';
                
alreadyLoaded 1;
                break;
            }
        case 
btn_home :
            if (
alreadyLoaded == 2)
            {
                break 
outer;
            }
            else
            {
                
alreadyLoaded 2;
                
txtFile 'datei2.txt';
                
home_bg.gotoAndPlay(2);
                break;
            }
        case 
btn_pic :
            if (
alreadyLoaded == 3)
            {
                break;
            }
            else
            {
                
txtFile 'datei3.txt';
                
alreadyLoaded 3;
                break;
            }
    } 
und zwar sollte das das "break outer;" dazu führen das er aus der switch-anweisung heraus springt und dann nichts mehr macht. die variable alreadyLoaded soll ja sozusagen überprüfen ob der Fall schonmal eingetreten ist. oder hab ich hier nen denkfehler.... danke nochmal für dich schnell hilfe =)

LG raDDe

Geändert von raDDe (23-07-2010 um 13:08 Uhr)
raDDe ist offline   Mit Zitat antworten
Alt 23-07-2010, 13:46   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434
Das break innerhalb der if-Abfrage macht keinen Sinn.
Lieber so:
PHP-Code:
switch(evt.target)
{
    case 
btn_uns:
        if(...)
        {
            ...
        }
        else
        {
            ...
        }
        break;
        .
        .
        .

Deine Überprüfungsvariable birgt auch so gewisse Risiken. Stell dir einfach folgende Betätigungsreihenfolge vor:
btn_uns (alreadyLoaded=1)
btn_home (alreadyLoaded=2)
btn_uns ->jetzt ist alreadyLoaded auf 2, eins wurde aber bereits geladen, und müsste dem zu folge auch nicht mehr geladen werden.

Anstatt die Texte erst beim betätigen des Buttons zu laden, könntest du sie eigentlich auch direkt alle Laden und in Variablen speicher und diese zum Belegen des Dyn. Textfeldes verwenden.
Lukas78 ist offline   Mit Zitat antworten
Alt 23-07-2010, 14:05   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 9
ich dachte eigentlich das erst beim drücken des Buttons abgefragt wird, welcher button gedrückt wurde... dann in der switch anweisung geschaut wird welcher fall eingetreten ist, und dann soll meine alreadyLoaded Variable eigentlich nur etwas verhindern. Und zwar wird wenn ein button gedrück wird ein text in ein dyn. textfeld geladen, aber gleichzeitig soll ein mc animiert werden.
indem Fall wäre das der home_bg mc.

Das heißt die alreadyLoaded Variable soll verhindern das dieser beim erneuten klicken des selben Buttons nochmal ausgeführt wird.

deswegen versteh ich auch nicht warum das break in der if-anweisung schlecht sein soll.

wenn btn_home geklickt wird und alreadyLoaded auf dem Wert ist der für diesen Fall gesetzt wurde, sollte er laut anweisung aus den schleifen rausspringen und nichts mehr machen. Ist ja auch logisch das textfeld wurde bereits geladen und der mc wurde acuh einmal durchlaufen...


danke für deine Mühe die du mit mir hast

lg raDDe
raDDe ist offline   Mit Zitat antworten
Alt 23-07-2010, 14:31   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434
Ich seh da keine Schleife!

Und
PHP-Code:
if(...)
{
    ...
    break;
}
else
{
    ...
    break;

macht exakt das gleiche wie:
PHP-Code:
if(...)
{
    ...
}
else
{
    ...
}
break; 
von daher machts keinen Sinn.

Was alreadyLoaded betrifft, vielleicht ist da nur der Name schlecht gewählt, current oder active wär vielleicht besser, weil die Abfrage so halt nicht verhindert, dass ein Text zweimal geladen wird.
Ich würd mir mal überlegen, ob du jedesmal den Text neu aus ner externen Dateiladen willst, oder vielleicht doch besser in einer Variablen Speichern. Dann kannst du bei entsprechndem Drücken des Buttons überprüfen ob die Variable noch null ist -> dann text Laden, und wenn nicht -> dann Textfeld mit Variable belegen.
Lukas78 ist offline   Mit Zitat antworten
Alt 24-07-2010, 01:29   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 9
danke nochmal, das mit dem alreadyLoaded war vielleicht echt etwas doof gewählt. Aber ich frage mich nun wirklich wo ich überprüfen soll, und vorallem wie ich überprüfen soll ob der button schon geklickt wurde.

aktueller btnClick mit der Vorschlagsumsetzung die dateien in variablen zu laden =)

PHP-Code:
function btnClick(evt:MouseEvent):void
{

    
// Var deklaration
    
var txtFile:String '';
    
// Fallunterscheidung für die jeweilige Datei
    
switch (evt.target)
    {
        case 
btn_uns :
            
txtFile cont_uns;
            
home_bg.gotoAndPlay(2);
            break;
        case 
btn_home :
            
txtFile cont_home;
            break;
        case 
btn_pic :
            
txtFile cont_pic;
            break;
    }
    
trace(txtFile); 
wenn ich nun auf btn_uns klicke öffnet er mit korrekt den inhalt in das dynamische textfeld und spiel den MC home_bg ab dem zweiten Frame ab.

Problem ist das der MC beim erneuten klicken wieder von vorne spielt, ich aber gerne den Endzustand hätte.

wenn ich, um das zu realisieren, eine variable "active" oder "current" einführe und dann in den einzelnen cases setze, kann ich die switch-anweisung nicht unterbrechen.

irgendwas denke ich glaube ich falsch bei der anweisung ...


LG raDDe
raDDe ist offline   Mit Zitat antworten
Alt 26-07-2010, 08:36   #10 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434
Wenn du ein active oder current verwendest, musst du ja nicht den switch abbrechen, du musst ja lediglich abfragen, ob der aktuell geklickte Button bereits der aktive ist, wenn ja muss einfach nichts ausgeführt werden.

PHP-Code:
function btnClick(evt:MouseEvent):void
{

    
// Var deklaration
    
var txtFile:String '';
    
// Fallunterscheidung für die jeweilige Datei
    
switch (evt.target)
    {
        case 
btn_uns :
            if( 
active != 0)
            {
                
txtFile cont_uns;
                
home_bg.gotoAndPlay(2);
                
active 0;
            }
            break;
        case 
btn_home :
            if( 
active != 1)
            {
                
txtFile cont_home;
                
active 1;
            }
            break;
        case 
btn_pic :
            if( 
active != 2)
            {
                
txtFile cont_pic;
                
active 2;
            }
            break;
    }
    
trace(txtFile); 

Lukas78 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
datei laden, error #2032, io error

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptproblem beim Preloader fürs Laden externer Dateien Dr. Chaos Flash MX 17 04-07-2008 14:37
Probleme beim laden externer Dateien davency Flash Einsteiger 4 29-04-2008 11:40
Probleme beim laden externer dateien shorty Mobile Flash und Flash Lite 1 25-08-2007 23:47
Audio-Player, fehler beim Laden des Songs aus externer Quelle ProphetX ActionScript 2 2 25-08-2006 13:22
Fehler beim laden von externer Datei Cypher75 ActionScript 1 4 24-08-2006 10:03


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele