Flashseite funktioniert nicht

EGJSoldier

Erfahrenes Mitglied
Hallo zusammen, ich bin gerade dabei, mir eine Seite mit Flash zu bauen. Aber die Funktioniert nicht. Ich bekomme folgende Fehlermeldung:
Code:
1118: Implizite Umwandlung von einem Wert mit statischem Typ flash.display:DisplayObject in einen möglicherweise nicht verwandten Typ flash.display:MovieClip.
1118: Implizite Umwandlung von einem Wert mit statischem Typ flash.display:DisplayObject in einen möglicherweise nicht verwandten Typ flash.display:MovieClip.

Mein Code dazu sieht so aus(ist Actionscript 3):
Code:
var myMovies_arr:Array = new Array("home.swf", "leistungen.swf", "kontakt.swf", "impressum.swf");
var loader:Loader;
var container:MovieClip = new MovieClip();
addChild(container);
function initNav():void {
	progressBar.scaleX = 0;
	for (var i:uint = 0; i<myMovies_arr.length; i++) {
		var aktNav:MovieClip = this["nav"+i];
		aktNav.buttonMode = true;
		aktNav.myIndex = i;
		aktNav.addEventListener(MouseEvent.ROLL_OVER,rollOverHandler);
		aktNav.addEventListener(MouseEvent.ROLL_OUT,rollOutHandler);
		aktNav.addEventListener(MouseEvent.CLICK,loadMyMovie);
	}
}
function rollOverHandler(e:MouseEvent):void {
	e.target.gotoAndPlay("in");
}
function rollOutHandler(e:MouseEvent):void {
	e.target.gotoAndPlay("out");
}
function loadMyMovie(e:MouseEvent):void {
	progressBar.scaleX = 0;
	var myIndex:uint = e.currentTarget.myIndex;
	loader = new Loader();
	var myRequest:URLRequest = new URLRequest(myMovies_arr[myIndex]);
	loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);
	loader.contentLoaderInfo.addEventListener(Event.INIT,imageLoaded);
	loader.load(myRequest);
}
function imageLoaded(e:Event):void {
	if(container.numChildren >0) {
		var lastContent:MovieClip = container.removeChildAt(0);
		lastContent = null;
	}
	var myContent:MovieClip = container.addChild(e.target.content);	
	myContent.gotoAndStop(2);
}
function progressHandler(e:ProgressEvent):void {
	var geladen:Number = e.target.bytesLoaded;
	var total:Number = e.target.bytesLoaded;
	var prozent:Number = geladen/total;
	progressBar.scaleX = prozent;
}
initNav();
stop();

was mache ich falsch

Danke schonmal im vorraus.

MfG
EGJSoldier
 
Hi, also ich habe hier ein bisschen was an dem Code Rumgebastelt, aber der Fehler ist immer noch da.
Code:
var myMovies_arr:Array = new Array("home.swf", "home.swf", "home.swf", "home.swf");
var loader:Loader;
var container:MovieClip = new MovieClip();
addChild(container);
function initNav():void {
	progressBar.scaleX = 0;
	for (var i:uint = 0; i<myMovies_arr.length; i++) {
		var aktNav:MovieClip = this["nav"+i];
		aktNav.buttonMode = true;
		aktNav.myIndex = i;
		aktNav.addEventListener(MouseEvent.ROLL_OVER,rollOverHandler);
		aktNav.addEventListener(MouseEvent.ROLL_OUT,rollOutHandler);
		aktNav.addEventListener(MouseEvent.CLICK,loadMyMovie);
	}
}
function rollOverHandler(e:MouseEvent):void {
	e.target.gotoAndPlay("in");
}
function rollOutHandler(e:MouseEvent):void {
	e.target.gotoAndPlay("out");
}
function loadMyMovie(e:MouseEvent):void {
	progressBar.scaleX = 0;
	var myIndex:uint = e.currentTarget.myIndex;
	loader = new Loader();
	var myRequest:URLRequest = new URLRequest(myMovies_arr[myIndex]);
	loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);
	loader.contentLoaderInfo.addEventListener(Event.INIT,imageLoaded);
	loader.load(myRequest);
}
function imageLoaded(e:Event):void {
	if(container.numChildren >0) {
		var lastContent:MovieClip = container.removeChildAt(0);
		lastContent = null;
	}
	var myContent:MovieClip = container.addChild(e.target.content);
	myContent.gotoAndStop(2);
}
function progressHandler(e:ProgressEvent):void {
	var geladen:Number = e.target.bytesLoaded;
	var total:Number = e.target.bytesLoaded;
	var prozent:Number = geladen/total;
	progressBar.scaleX = prozent;
}
initNav();
stop();

An den dick markierten Stellen tritt diese Fehlermeldung auf.
 
Die Fehlermeldung sagt doch alles. Du möchtest ein Object vom Typ "DisplayObject" einer Variable vom Typ "MovieClip" zuweisen, aber die Typen sind inkompatibel. Wenn das DisplayObject aber ein MovieClip ist, kannst du einen Typecast durchführen.

Code:
function imageLoaded(e:Event):void {
	if(container.numChildren >0) {
		var lastContent:MovieClip = container.removeChildAt(0) as MovieClip;
		lastContent = null;
	}
	var myContent:MovieClip = container.addChild(e.target.content) as MovieClip;
	myContent.gotoAndStop(2);
}

Um sicher zu gehen, dass das Objekt ein MovieClip ist und der Typecast nicht in einer Exception endet, kannst du den Typ mit
Code:
if(variable typeof "movieclip")
überprüfen.
 
Zuletzt bearbeitet:
Danke erstmal für die Antworten. Ich bekomme jetzt aber eine andere Fehlermeldung:
Code:
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
	at Hompage_Flash_fla::MainTimeline/initNav()
	at Hompage_Flash_fla::MainTimeline/frame1()
 
Jo die Fehlermeldung kommt erst, nachdem ich den Code geändert habe. Also wenn ich das "as MovieClip" dransetze.

Also ich bekomme das Problem nicht elöst. Ich kann das Script drehen und wenden wie ich will
 
Zurück