Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-12-2007, 15:18   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
Complete Event wird nach der Veröffentlichung nicht aufgerufen

hallo,

ich habe ein sehr komisches problem....ich lese aus einer xml datei und rufe eine funktion bei dem event "COMPLETE" auf. in flash funktioniert alles bis zur sekunde der veröffentlichung. im browser kommt er nicht zum ende.
orderstruktur sowie datenstruktur sind unverändert.

die datei liegt in einem unterordner namens "hidden".

Code:
var myRequest:URLRequest   = new URLRequest("hidden/config.xml");
var myLoader:URLLoader       = new URLLoader();

myLoader.load(myRequest);
myLoader.addEventListener(Event.COMPLETE, onComplete);

function onComplete(event:Event):void
{
    myLoader = event.target as URLLoader; 
	
    if (myLoader != null)
    { 
        externalXML = new XML(myLoader.data);
        trace("Vars initialisiert : \n\r" + externalXML.toXMLString());
    }
    else
    {
		 
        trace("loader is not a URLLoader!");
    }
}
wie gesagt, in flash cs3 stimmt alles und läuft oihne fehler. flash version ist flash 9.

freue mich über jede hilfe!

lg, nick
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 15:36   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Schaue mal nach contentLoaderInfo. Die EventListener müssen an dieses Property angehangen werden.
Omega Psi ist offline   Mit Zitat antworten
Alt 19-12-2007, 15:40   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
und warum funktioniert es in flash und im browser nicht?
das merkwürdige, es hat auch schon mal funktioniert, ohne das ich an diesem punkt was geändert habe...
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 15:51   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Kein Plan.
Omega Psi ist offline   Mit Zitat antworten
Alt 19-12-2007, 15:53   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
wenn ich es folgend ändere:
Code:
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
sagt er, das er die eigenschaft contentLoaderInfo nicht kennt und spielt selbst in flash nichts mehr ab.
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 16:34   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
überall sehe ich, das es folgend gemacht wird:

Code:
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
nur wenn ich das so schreibe, kommt folgender fehler:

ReferenceError: Error #1069: Eigenschaft contentLoaderInfo für flash.net.URLLoader nicht gefunden und es ist kein Standardwert vorhanden.

muss ich "contentLoaderInfo" irgendwie deklarieren oder so?
irgendwie ist diese methode nicht bekannt, bzw. wird nicht im kontextmenü angezeigt. ich bin echt verzeifelt, ich saß stunden an dem projekt und nun ist alles so wie es sein soll und der export funkst nicht. das kanns doch nicht sein, selbst die vorschau funktioniert so wie sie sein soll. wenn ich irgendwas in as 3 falsch gemacht habe, sollte doch flash das nicht richtig anzeigen bzw. mir das abspielen ohne zu meckern - ich verstehe die welt nicht mehr.
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 16:56   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
kann es sein, das es die methode contentLoaderInfo nur für den loader gibt und nicht für den urlloader?
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 17:20   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 195
aus lauter verzweiflung werde ich jetzt meinen gesamten code offen legen....

meine xml:

Code:
    <data>
        <item id='1'>
            <filename>CSC3_de.flv</filename>
            <linktext>Mehr über ContiSportContact 3</linktext>
            <linktext_x>150</linktext_x>
            <linktext_y>250</linktext_y>
            <linktarget>http://www.google.de</linktarget>
            <replaytext>Nochmal abspielen</replaytext>
            <targetwindow>_blank</targetwindow>
            <replaytext_x>500</replaytext_x>
            <replaytext_y>250</replaytext_y>
            <textcolor>FB9D00</textcolor>
            <textsize>16</textsize>
            <font>Arial</font>
            <loadingtext>Loading...</loadingtext>
            <loadingtextcolor>FB9D00</loadingtextcolor>
            <loadingtextsize>12</loadingtextsize>
            <loadingtextfont>Arial</loadingtextfont>
            <loadingtext_x>355</loadingtext_x>
            <loadingtext_y>170</loadingtext_y>
        </item>
    </data>
AS3:

Code:
import flash.*;

/* Init flashvars =>

filename     //Videodateiname in "hidden/"
linktext     //Linktext
linktext_x   //X-Koordinate für die Linkposition
linktext_y   //Y-Koordinate für die Linkposition
linktarget   //linkadresse
replaytext   //Text für das erneute Abspielen
replaytext_x //X-Koordinate für die Replaytextposition
replaytext_y //Y-Koordinate für die Replaytextposition
targetwindow // _blank / _self
textcolor    // in Hex, ohne #
*/

var myVideo:Video          = new Video(790,290);
var myLink:TextField       = new TextField();
var myReplayText:TextField = new TextField();
var mc:MovieClip           = new MovieClip();
var mc2:MovieClip          = new MovieClip();
var externalXML:XML;

var myRequest:URLRequest   = new URLRequest("hidden/config.xml");
var myLoader:URLLoader     = new URLLoader(myRequest);

var format:TextFormat      = new TextFormat();
var myTimer:Timer          = new Timer(0,2000);
var loaderBg:MovieClip     = new MovieClip();
var lText:TextField        = new TextField();
var myLinkAd:MovieClip     = new MovieClip();
var myReplayAd:MovieClip   = new MovieClip();
var myLinkAd2:MovieClip    = new MovieClip();
var myReplayAd2:MovieClip  = new MovieClip();
var bufferPct:Number       = new Number();
var loadInfo:LoaderInfo    = new LoaderInfo();

var filename         = "";
var linktext         = "";
var linktext_x       = "";
var linktext_y       = "";
var linktarget       = "";
var replaytext       = "";
var replaytext_x     = "";
var replaytext_y     = "";
var targetwindow     = "";
var textcolor        = "";
var textsize         = 10;
var font             = "Arial";
var loadingtext      = "";
var loadingtextsize  = 10;
var loadingtextfont  = "Arial";
var loadingtextcolor = "";
var loadingtext_y    = 170;
var loadingtext_x    = 355;

myLoader.addEventListener(Event.COMPLETE, handleComplete);

pfeil_small.visible  = false;
pfeil_big.visible    = false;
pfeil_small2.visible = false;
pfeil_big2.visible   = false;

myLinkAd     = pfeil_small;
myReplayAd   = pfeil_small2;
myLinkAd2    = pfeil_big;
myReplayAd2  = pfeil_big2;

loaderImg.visible = true;

addChild(myVideo);
addChild(myLink);
addChild(myLinkAd);
addChild(myLinkAd2);
addChild(mc2);
addChild(myReplayText);
addChild(myReplayAd);
addChild(myReplayAd2);
addChild(mc);
addChild(loaderBg);
addChild(loaderImg);
addChild(lText);

var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);

ns.client = new Object();
ns.bufferTime = 5;
myVideo.attachNetStream(ns);

var buffer_interval:Number = setInterval(checkBufferTime, 100, ns);

function checkBufferTime(my_ns:NetStream):void {
    bufferPct = Math.min(Math.round(my_ns.bufferLength/my_ns.bufferTime*100), 100);
    
	if(bufferPct >= 100)
	{
	  loaderImg.visible = false;	
	  loaderBg.visible  = false;
	  lText.visible     = false;
	  ns.resume();
	}
}

ns.addEventListener(NetStatusEvent.NET_STATUS ,  
function(event:Event) { 

trace("event : " + event.info.code);  
 if (event.info.code == "NetStream.Play.StreamNotFound") {
		trace("Videodatei nicht vorhanden");
	}
	else if (event.info.code == "NetStream.Buffer.Full") {
		trace("Buffer voll und Start");
	}
	else if (event.info.code == "NetStream.Play.Stop") {
		trace("FilmEnde");
		movieEnd();
	}
}  
);  


function playMovie():void{
	trace("start");
	ns.play("hidden/" + filename);
	ns.seek(1);
	ns.pause();
}

function handleComplete(event:Event):void
{
    myLoader = event.target as URLLoader; 
	
    if (myLoader != null)
    { 
        externalXML = new XML(myLoader.data);
        trace("Vars initialisiert : \n\r" + externalXML.toXMLString());
		initVars();
		init();
		playMovie();
    }
    else
    {
		 
        trace("loader is not a URLLoader!");
    }
}

function initVars():void{
	
	filename         = externalXML.item[0].filename;
	linktext         = externalXML.item[0].linktext;
	linktext_x       = externalXML.item[0].linktext_x;
	linktext_y       = externalXML.item[0].linktext_y;
	linktarget       = externalXML.item[0].linktarget;
	replaytext       = externalXML.item[0].replaytext;
	replaytext_x     = externalXML.item[0].replaytext_x;
	replaytext_y     = externalXML.item[0].replaytext_y;
	targetwindow     = externalXML.item[0].targetwindow;
	textcolor        = externalXML.item[0].textcolor;
	textsize         = externalXML.item[0].textsize;
	font             = externalXML.item[0].font;
	loadingtext      = externalXML.item[0].loadingtext;
	loadingtextcolor = externalXML.item[0].loadingtextcolor;
	loadingtextsize  = externalXML.item[0].loadingtextsize;
	loadingtextfont  = externalXML.item[0].loadingtextfont;
	loadingtext_y    = externalXML.item[0].loadingtext_y;
	loadingtext_x    = externalXML.item[0].loadingtext_x;
	
}

function init():void{
	
	format.font  = loadingtextfont;
	format.color = "0x" + loadingtextcolor;
	format.size  = loadingtextsize;

	lText.text       = loadingtext;
	lText.width      = lText.length * 4 + (loadingtextsize * 2);
	lText.selectable = false;
	lText.x          = loadingtext_x;
	lText.y          = loadingtext_y;
	
	lText.setTextFormat(format);
	
	loaderBg.graphics.beginFill(0x000000);
	loaderBg.graphics.drawRect(0, 0, 800,800);
	loaderBg.alpha = 0.8;
	loaderBg.graphics.endFill();
	loaderBg.x = 0;
	loaderBg.y = 0;
	loaderBg.visible = true;
	
	format.font  = font;
	format.color = "0x" + textcolor;
	format.size  = textsize;
	
	myLink.htmlText   = "<a href=\"" + linktarget + "\" target=\"" + targetwindow + "\">" + linktext + "</a>";

	myLink.x     = linktext_x;
	myLink.y     = linktext_y;
	myLink.width = 250;

	//myLink.textColor = "0x" + textcolor;
	myLink.visible    = false;
    myLink.selectable = false;
	
	myReplayAd.y  = replaytext_y;
	myReplayAd.x  = replaytext_x;
    myReplayAd2.y = replaytext_y;
	myReplayAd2.x = replaytext_x;
	
	myReplayAd.visible  = false;
	myReplayAd2.visible = false;
	
	myLinkAd.x = linktext_x;
	myLinkAd.y = linktext_y;
	myLinkAd.visible = false;
	
	myLinkAd2.x = linktext_x;
	myLinkAd2.y = linktext_y;
	myLinkAd2.visible = false;
	
	myLink.setTextFormat(format);
   
	myReplayText.textColor  = "0x" + textcolor;
	myReplayText.visible    = false;
	myReplayText.text       = replaytext;
	myReplayText.selectable = false;
	myReplayText.x          = replaytext_x;
	myReplayText.y          = replaytext_y;

    myReplayText.setTextFormat(format);
	
    myReplayText.width = 150;
	
	mc.graphics.beginFill(0x000000);
	mc.graphics.drawRect(0, 0, 150, textsize * 2);
	mc.alpha = 0;
	//mc.graphics.drawRect(0, 0, 80, 80);
	mc.graphics.endFill();

	//mc.x = 500;
	//mc.y = 250;
	mc.x = replaytext_x;
	mc.y = replaytext_y;

	mc.buttonMode    = true;
    mc.useHandCursor = true;
	
	mc.addEventListener(MouseEvent.CLICK, restartMovie);
	mc.addEventListener(MouseEvent.ROLL_OVER, changeToBig2);
	mc.addEventListener(MouseEvent.ROLL_OUT, changeToSmall2);
	
	mc2.graphics.beginFill(0x000000);

	mc2.graphics.drawRect(0, 0, 250 , textsize * 2);
	mc2.alpha = 0;
	//mc.graphics.drawRect(0, 0, 80, 80);
	mc2.graphics.endFill();

	//mc.x = 500;
	//mc.y = 250;
	mc2.x = linktext_x;
	mc2.y = linktext_y;

	mc2.buttonMode    = true;
    mc2.useHandCursor = true;
	
	mc2.addEventListener(MouseEvent.ROLL_OVER, changeToBig);
	mc2.addEventListener(MouseEvent.ROLL_OUT, changeToSmall);
}

function changeToSmall(event:MouseEvent):void{ 
 if(myLink.visible)
 {	
  trace("changeToSmall");	
  myLinkAd2.visible = false;
  myLinkAd.visible = true;
 }
}


function changeToBig(event:MouseEvent):void{
 if(myLink.visible)
 {
   trace("changeToBig");	
   myLinkAd.visible = false;
   myLinkAd2.visible = true;
 }
}

function changeToSmall2(event:MouseEvent):void{
 if(myReplayText.visible)
 {
  trace("changeToSmall2");	
  myReplayAd2.visible = false;
  myReplayAd.visible = true;
 }
}

function changeToBig2(event:MouseEvent):void{
 if(myReplayText.visible)
 {
  trace("changeToBig2");	
  myReplayAd.visible = false;	
  myReplayAd2.visible = true;
 }
}

function restartMovie(event:MouseEvent):void{
  init();	 
  playMovie();
}

function movieEnd():void{
	myReplayText.visible = true;
	myLink.visible       = true;
	myReplayAd.visible   = true;
	myLinkAd.visible     = true;
}
kann mir denn keiner helfen *kopf auf den tisch schlag* ???
NickD ist offline   Mit Zitat antworten
Alt 19-12-2007, 19:18   #9 (permalink)
tux
flashback
 
Benutzerbild von tux
 
Registriert seit: Aug 2003
Beiträge: 529
bedeutet, das letztendlich dein xml nicht geladen wird, richtig?!

ich denke, das ist ein pfadproblem. klingt unglaublich, ist aber so.

verschaffe dir mal gewissheit mit einem IOERROR event, den du an
deinen loader bindest:

Code:
myLoader.addEventListener(IOErrorEvent.IO_ERROR, loadingError );

function loadingError (event:IOErrorEvent):void
{
trace ("ERROR TYPE: " + event.type + "\nERROR PHASE: " +  + event.eventPhase + "\nERROR MESSAGE: " + event.text);
}
tux ist offline   Mit Zitat antworten
Alt 19-12-2007, 19:21   #10 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Oder ein security Problem. Guck mal in den Veröffentlichungseinstellungen, da kann man festlegen, ob Flash entweder aufs Internet, oder auf lokale Dateien zugreifen kann.
Hast du den Debug-Player installiert? Der würde dir ziemlich sicher ne Exception liefern.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 19-12-2007, 20:58   #11 (permalink)
Lehrling
 
Registriert seit: Jan 2007
Ort: Berlin
Beiträge: 172
Nix da...

addEventListener gehören bei der Loader-Klasse dem contentLoaderInfo und beim URLLoader-Klasse ganz normal der Klasse selbst (URLLoader.addEventListener(...,...);

MfG
__________________
Mit besten Grüßen, Best regards,
neknova
neknova ist offline   Mit Zitat antworten
Alt 19-12-2007, 22:14   #12 (permalink)
tux
flashback
 
Benutzerbild von tux
 
Registriert seit: Aug 2003
Beiträge: 529
bitte wie meinen?

"nix da..." ist ja mal zur abwechslung ein konstruktives reply, wow...
tux ist offline   Mit Zitat antworten
Alt 19-12-2007, 22:56   #13 (permalink)
l2l|c4o
 
Benutzerbild von Sir Freako
 
Registriert seit: Nov 2005
Ort: düstere Grotte im Süden
Beiträge: 968
ehhm ..

also so mache ich das zB gar nicht mehr . Wenn ich irgendetwas mache dann ist meine Bühne lehr und ich hohle mir alles nur über code auf die Bühne mit Klassen , dann hat man auch meistens solche Probleme nicht .

einfach in der Hilfe auf EventDispatcher class und dann mal ganz nach unten Scrollen da ist so ein Beispiel mit CustomDispatcher das mußt du anwenden

PHP-Code:
XMLDrive = new XmlDrive(myComponent);
XMLDrive.decorDispatcher = new CustomDispatcher();
XMLDrive.decorDispatcher.addEventListener("onLoaderResult"onDataResult); 
xmlDrive ist die Klasse für den URLLoader

das ist schon alles ein wenig anders in as3
also ich gehe jetzt mal davon aus das wenn es im FDT Browser geht es dann auch online geht

Das ist aber auch SpaghettiWirwarCode der offengelegte code also nicht in Klassen strukturiert das sollen/dürfen wir eigentlich garnichtmehr machen !!

Also Singleton , Proxy und Interface das sollte eigentlich alles sitzen dann kannst du dich an as3 ranwagen ,
du willst doch spaß und Überblick und Erfolg haben - oder

Geändert von Sir Freako (19-12-2007 um 23:39 Uhr)
Sir Freako ist offline   Mit Zitat antworten
Alt 19-12-2007, 23:37   #14 (permalink)
Lehrling
 
Registriert seit: Jan 2007
Ort: Berlin
Beiträge: 172
Kannst du mir mal verraten, weshalb er sich seinen eigenen Event basteln soll, wenn es doch schon hierfür ein Standard-Event geben tut?

Soll er vielleicht noch ne Klasse: "XMLReallyReallyLoaded" mit dem Event:

"XMLReallyReallyLoaded.I_SWEAR_THAT" schreiben?
__________________
Mit besten Grüßen, Best regards,
neknova
neknova ist offline   Mit Zitat antworten
Alt 19-12-2007, 23:47   #15 (permalink)
Lehrling
 
Registriert seit: Jan 2007
Ort: Berlin
Beiträge: 172
Zitat:
Zitat von Sir Freako Beitrag anzeigen
ehhm ..
Also Singleton , Proxy und Interface das sollte eigentlich alles sitzen dann kannst du dich an as3 ranwagen ,
du willst doch spaß und Überblick und Erfolg haben - oder
Singleton ist nicht wirklich (in AS3 Sprache) sinnvoll, jedoch Proxy und
wohl eher MVC, T-Factory, Combined-Iterator, Composite oder gar Command Pattern...

Nur ein oder zwei DesignMuster drauf zu haben ist meines Erachtens Schwachsinn......keine halben Sachen ;-)
__________________
Mit besten Grüßen, Best regards,
neknova
neknova 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 16:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele