Event listener

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Hey FF

jeg er i gang med at lave en preloader til en side.
jeg har en event listener, der sørger for at tingene bliver centreret, men jeg har kun prøvet at lave dette i as2.

Så nu kommer der en fejl når jeg prøver at lave det jeg gerne vil.

Jeg har pt. fjernet preloader funktionen.

frame 1. ser sådan her ud:

stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize);
 
function onResize(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize();
stage.removeEventListener(Event.RESIZE, onResize);

frame 2. ser sådan her ud:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize);
 
function onResize(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize();

Hvordan løser jeg det her?

På forhånd, tusinde tak!

//jonas

Kommentarer

Se jakobhs's brugerprofilcontributer
Indmeldt: 10-01-2007
Indlæg: 1085
Er offline

Kan du skrive hvilken fejl du får? Smile

Flash, Flash & Photoshop.
16 år Århus

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Jo det gør jeg når jeg kommer hjem Wink ....

men hvis jeg ikke skriver
stage.removeEventListener(Event.RESIZE, onResize);
i første frame, bliver den listener så ved med at være der selvom jeg er i et andet frame?

Se nigelaj's brugerprofil
Indmeldt: 23-10-2008
Indlæg: 94
Er offline

Nej, den burde vist blive fjernet.
Er ikke 100% på det, så ret mig hvis jeg tager fejl Smile

Det bedste tidspunkt at plante et træ, var for 100 år siden.
Det næstbedste er I DAG!

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Okey, tak.

Fejlen er:

1021: Duplicate function definition.
 
 
frame 1:
<code type="actionscript">
stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize);
 
function onResize(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize();
 
 
loadbar.width=0;
 
this.addEventListener(Event.ENTER_FRAME, loading);
 
function loading(e:Event):void {
	var total:Number=this.stage.loaderInfo.bytesTotal;
	var loaded:Number=this.stage.loaderInfo.bytesLoaded;
 
	loadbar.width=stage.stageWidth/(total/loaded);
 
	if (total==loaded) {
		loadbar.width=stage.stageWidth;
		gotoAndStop(2);
		this.removeEventListener(Event.ENTER_FRAME, loading);
		stage.removeEventListener(Event.RESIZE, onResize);
	}
 
}

frame 2:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize);
 
function onResize(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize();
Se jakobhs's brugerprofilcontributer
Indmeldt: 10-01-2007
Indlæg: 1085
Er offline

Duplicate function definition

..betyder at du har en eller flere funktioner, som der hedder det samme.

Det kan evt have noget at gøre med du har to der hedder: onResize
En i frame 1 on en i frame 2

Mvh Jakob

Flash, Flash & Photoshop.
16 år Århus

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

men det burde da ikke ske? da de ligger i to forskellige frames?

anyways, nu har jeg skrevet dette i frame 2:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize2);
 
function onResize2(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize2();

og får denne fejl:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at index_fla::MainTimeline/onResize2()
	at index_fla::MainTimeline/frame2()
	at flash.display::MovieClip/gotoAndStop()
	at index_fla::MainTimeline/loading()
Se nigelaj's brugerprofil
Indmeldt: 23-10-2008
Indlæg: 94
Er offline

Står der ikke også hvilken linje der er fejl på?

Prøv med

function onResize2(e:Event):void {

i stedet for

function onResize2(e:Event=null):void {

Smile

Angående det med samme navn på to forskellige frames: Den "gemmer" dine funktioner, variabler ect. fra tidligere frames. Så hvis du laver en function på frame 1, kan du kalde på den fra frame 2 Smile
Det er lidt forvirrende, har også holdt mig fra at bruge koder på flere frames, men nu har jeg kastet mig ud i det her forleden i forhold til en hjemmeside Smile

Det bedste tidspunkt at plante et træ, var for 100 år siden.
Det næstbedste er I DAG!

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Angående det med samme navn på to forskellige frames: Den "gemmer" dine funktioner,

kan man så også gøre det omvendt? altså kalde en funktion fra frame 2 i frame 1?

...men det virkede stadig ikke Sad nu siger den:

1136: Incorrect number of arguments.  Expected 1.
Se Claussen's brugerprofil
Indmeldt: 23-01-2008
Indlæg: 36
Er offline

Hvis du fjerner null fra e:Event og du vil kalde functionen igen uden at sende noget med, hvilket du gør
onResize2();
Skal du huske at sende null med.

onResize2(null);

//Claussen

Se nigelaj's brugerprofil
Indmeldt: 23-10-2008
Indlæg: 94
Er offline

Nej, tror ikke man kan kalde en funktion i frame 1, hvis man har lavet den i frame 2.
Det er jo en tidlinje. Så først laver man funktionen (frame 1), så nu har du en funktion. Så kan du kalde på den fra frame 2 (eller 1).
Hvis du gør det omvendt beder du jo flash om at kalde en funktion som endnu ikke eksistere Smile

Det bedste tidspunkt at plante et træ, var for 100 år siden.
Det næstbedste er I DAG!

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

tak for svarene, men jeg får desværre den her fejl i output:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at index_fla::MainTimeline/onResize2()
	at index_fla::MainTimeline/frame2()
	at flash.display::MovieClip/gotoAndStop()
	at index_fla::MainTimeline/loading()

as i første frame er:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize1);
 
function onResize1(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize1(null);
 
 
loadbar.width=0;
 
this.addEventListener(Event.ENTER_FRAME, loading);
 
function loading(e:Event):void {
	var total:Number=this.stage.loaderInfo.bytesTotal;
	var loaded:Number=this.stage.loaderInfo.bytesLoaded;
 
	loadbar.width=stage.stageWidth/(total/loaded);
 
	if (total==loaded) {
		loadbar.width=stage.stageWidth;
		gotoAndStop(2);
		this.removeEventListener(Event.ENTER_FRAME, loading);
		stage.removeEventListener(Event.RESIZE, onResize1);
	}
 
}

as i 2. frame er:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
stage.addEventListener(Event.RESIZE, onResize2);
 
function onResize2(e:Event=null):void {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
onResize2(null);

hvad har jeg gjort galt?

Se mrstrande's brugerprofil
Indmeldt: 04-02-2010
Indlæg: 14
Er offline

Har ikke flash på denne maskine til at efterprøve, men forsøg evt. dette:

stop();
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
 
function onResize2() {
	trace("stages width = "+stage.stageWidth );
	trace("stages height = "+stage.stageHeight );
	loadbar.x=0;
	loadbar.y=0;
}
 
onResize2();

Desuden er det vigtigt at loadbar er tilgængelig også i frame2.

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Kan slet ikke få det til at virke, bliver ved med at få fejl...

Hvis der var en der kunne kigge på filen, ville jeg blive rigtig glad!

den ligger her: http://heydafo.com/ff/index.fla

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Ellers ville det også være super super fedt, hvis der var en der kunne give et eksempel på hvordan man laver en preloader med en listener der gør så at preloaderbaren hele tiden er centreret, hvis man skalere vinduet op og ned.

// Jonas

Se dafo's brugerprofil
Indmeldt: 12-08-2007
Indlæg: 149
Er offline

Kæmper stadig med problemet Sad ingen der har et bud på en løsning?