Archief - FLASH: Tween in class

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Wack0

Legacy Member
Hey

Ik ben eens een poging aant doen OO te actionscripte ( ik ben hier dus nieuw in)

het probleem is dat de classe die ik aan het schrijven ben een Tween zou moete uitvoeren die niet werkt.

Dit is de classe
Code:
class CharsWindow extends MovieClip {
	private var xmlUrl:String;
	private var nwWidth:Number;
	private var nwHeight:Number;
	private var nwName:String;
	private var newWin:MovieClip;
	public function CharsWindow(bgColor:Number, wWidth:Number, wHeight:Number, wName:String, xmlDoc:String) {
		xmlUrl = xmlDoc;
		nwWidth = wWidth;
		nwHeight = wHeight;
		nwName = wName;
		//
		newWin = _root.createEmptyMovieClip(wName, 1000);
		newWin._x = -wWidth-20;
		newWin._y = 0;
		newWin.beginFill(bgColor, 100);
		newWin.moveTo(0, 0);
		newWin.lineTo(wWidth, 0);
		newWin.lineTo(wWidth, 0);
		newWin.lineTo(wWidth, wHeight);
		newWin.lineTo(0, wHeight);
		newWin.endFill;
	}
	public function slideIn() {
		var whereTo:Number = 200; Number(Stage.width/2 - nwWidth/2);
		var tw = new mx.transitions.Tween(newWin,"_x",mx.transitions.easing.Elastic.easeOut,whereTo,3,true);
	}
}
En hiermee wordt ze aangeroepen
Code:
var t = new CharsWindow(0xFFFFFF, 200, Stage.height, "blabla", "blabla");
nxtBtn.onRelease = t.slideIn;

Er wordt dus een kaderke getekent buiten het scherm ( dat werkt ) en dat zou dan naar het midden moeten moeten schuiven.

Grtz en alvast bedankt

Wack0

Legacy Member
De tween op zich heb ik al aan de praat gekregen er is nu enkel nog een probleem met het doorgeven van de vars binnen de klasse.

Breen

Legacy Member
hoe bedoel je "doorgeven van vars binnen de klasse" wat is het probleem daarmee?

Wack0

Legacy Member
Wel als je binnen de klasse een var aanmaakt dan in de eerste functie een waarde aan die var toekent, en dan diezelfde var binnen een tweede functie wilt gebruiken. Dan geeft hij dat de variable undefined is.

LunchBox

Legacy Member
stel anders een variabele in van het type Object binnen de klasse, passeer daar je variabelen van de eerste functie naartoe, en haal ze zo binnen de tweede functie weer op. ik geloof dat de "propere" oplossing gebruik van de delegate klasse is.

op http://www.flashfocus.nl/forum/forumdisplay.php?f=7 gaan ze je zo kunnen verderhelpen.

Breen

Legacy Member
De manier waarop je het uitlegt is de volgende:

- class variable aanmaken, var id:Number
- functie 1 --> this.id = 10
- functie 2 --> trace(this.id) // traced undefined.

Als dat is wat er gebeurd, dan doe je iets verkeerd, want als object is id in alle functies dan beschikbaar (buiten de static functies, om volledig correct te zijn).

Breen

Legacy Member
Heb je code gedebugged, en het zijn 2 kleine dingen, die je moet aanpassen om het werkende te krijgen. Ook wil ik wel opmerken dat "variabele in klassen" absoluut niet het probleem zijn.

Change 1: (je vergat hier de (), waardoor je de functie niet aanroept, maar ze gelijkstelt.)
Code:
nxtBtn.onRelease = t.slideIn;
Code:
nxtBtn.onRelease = t.slideIn();
Change 2: (je bent hier een argument vergeten, namelijk, vanwaar de tween moet starten.)
Code:
var tw = new mx.transitions.Tween(newWin, "_x", mx.transitions.easing.Elastic.easeOut, whereTo, 3, true);
Code:
var tw = new mx.transitions.Tween(newWin, "_x", mx.transitions.easing.Elastic.easeOut, fromWhere, whereTo, 3, true);

Wack0

Legacy Member
Bedankt, dat tweede van die tween had ik zelf ook al opgemerkt. En wat je zegt in je post daarboven is idd wat ik bedoelde. Ik zal eens kijken (morgen :P) of het nu werkt, alleszins bedankt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan