Archief - Tweens worden willekeurig onderbroken..?

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.

sh011265

Legacy Member
Hello hello

Ik ben bezig met het maken van een fotovieuwer voor een schoolopdracht. Het ding is vrijwel af, maar ik zit nog met een vreemde bug.

Af en toe worden sommige foto's niet volledig vergroot & blijven ze dus vaststeken in een van de tweens die ik erop loslaat. Soms verloopt alles ook perfect..

Vraag me dus af aan wat dit zou kunnen liggen?

Hier is de link

Graag dus een mogelijke oplossing ervoor.. Indien je de code nodig hebt: let me know..

Thx!

Zero Grav

Legacy Member
Hebt ge uw tweens globaal gedeclareerd?

Tweens moeten trouwens een extra'tje zijn terwijl ze nu echt het project overnemen. Een easeOut van een halve seconde, waarin tegelijk de vorige foto weg werd gewerkt en de volgende binnen werd gestuurd, was veel toffer geweest.

iamdesign

Legacy Member
als je je images dynamisch toevoegt kan het zijn dat je bij het aanmaken (is het AS2?) een zelfde naam genereert en de vorige tween afbreekt.

geef beter je FLA, dan kunnen we direct helpen

sh011265

Legacy Member
Zero Grav zei:
Hebt ge uw tweens globaal gedeclareerd?

Tweens moeten trouwens een extra'tje zijn terwijl ze nu echt het project overnemen. Een easeOut van een halve seconde, waarin tegelijk de vorige foto weg werd gewerkt en de volgende binnen werd gestuurd, was veel toffer geweest.

Heb je idd wel een punt.. Maar aangezien het mn allereerste flash project is, ben ik best tevreden met het resultaat. Zal in de toekomst inderdaad de tweens beter op elkaar af stemmen etc zodat het geheel vlotter aanvoelt (& ook wat tweens achterwegen laten). Echter heb 'k er momenteel niet de tijd voor & zal 't dit dus worden voor school.. Enkel die lastige "tweenbug" zou 'k er nog uit willen krijgen..

iamdesign; zei:
als je je images dynamisch toevoegt kan het zijn dat je bij het aanmaken (is het AS2?) een zelfde naam genereert en de vorige tween afbreekt.

geef beter je FLA, dan kunnen we direct helpen
=> Is AS3
& je hebt gelijk, had beter onmiddelijk .fla gegeven :p
Here it is:

RapidShare: Easy Filehosting
Of op mn eigen host:
http://www.hekkie.be/Flash/FotoViewer.fla

Thx alvast!

Gerritn

Legacy Member
De garbage collector in AS3 ruimt alle objecten op waar geen referentie meer naar bestaat, dus ook je tweens (die starten, en dan wordt de referentie vergeten, dus zal je tween object uit het geheugen verwijderd worden als de GC passeert).

Wat je kan doen is je tween objecten globaal of op klasse-niveau declareren, ofwel je tweens bijhouden in een array, en het tweenobject uit de array gooien als ie afgelopen is.

sh011265

Legacy Member
Gerritn zei:
De garbage collector in AS3 ruimt alle objecten op waar geen referentie meer naar bestaat, dus ook je tweens (die starten, en dan wordt de referentie vergeten, dus zal je tween object uit het geheugen verwijderd worden als de GC passeert).

Wat je kan doen is je tween objecten globaal of op klasse-niveau declareren, ofwel je tweens bijhouden in een array, en het tweenobject uit de array gooien als ie afgelopen is.

Thx voor het advies, maar het lijkt me nogsteeds niet te werken. Heb -zoals je zei- alle tweens globaal gedeclareerd.. Maar nogsteeds blijft hij soms hangen.. :sad:

Hier is de nieuwe .fla file: RapidShare: Easy Filehosting
http://www.hekkie.be/Flash/FotoViewer.fla
Doe ik nog iets fouts misschien?

Gerritn

Legacy Member
@screwless: De standaard Tween klasse is totaal niet buggy, je moet gewoon zorgen dat je alles correct gebruikt. Tweener is inderdaad wel makkelijk, maar zorgt terug voor extra filesize, de gewone Tween klasse is trouwens niet minder makkelijk.

@sh011265: Ik heb snel even je code doorlopen, en ik zie dat je je tweens overschrijft (tween 1 tem 4 worden bvb om de 250 ms opnieuw ingesteld), dit kan een mogelijke oorzaak zijn.

sh011265

Legacy Member
Gerritn zei:
@sh011265: Ik heb snel even je code doorlopen, en ik zie dat je je tweens overschrijft (tween 1 tem 4 worden bvb om de 250 ms opnieuw ingesteld), dit kan een mogelijke oorzaak zijn.

Uhu is idd zo:

Code:
	var timer:Timer = new Timer(250,my_total);
	timer.start();
	timer.addEventListener(TimerEvent.TIMER,callThumbs);

Code:
function callThumbs(e:TimerEvent):void{
	var thumb_url = my_images[i].@THUMB;
	var thumb_loader = new Loader();
	thumb_loader.load(new URLRequest(thumb_url));
	thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
	thumb_loader.name = i;
	var position_x = Math.random()*900;
	var position_y = Math.random()*500;
	//var tween:Tween = new Tween(thumb_loader, "rotation", Strong.easeOut, -360, 360, 5, true);
	tween1 = new Tween(thumb_loader, "scaleX", Strong.easeIn, 0, 1, 1.5, true);
	tween2 = new Tween(thumb_loader, "scaleY", Strong.easeIn, 0, 1, 1.5, true);
	tween3 = new Tween(thumb_loader, "x", Regular.easeIn, 0, position_x, 1.5, true);
	tween4 = new Tween(thumb_loader, "y", Regular.easeIn, 0, position_y, 1.5, true);
	thumb_loader.addEventListener(MouseEvent.CLICK,klik);
	thumb_loader.addEventListener(MouseEvent.MOUSE_OVER,over);	
	thumb_loader.addEventListener(MouseEvent.MOUSE_OUT,uit);				
	i++;
	var preloader_pb:ProgressBar = new ProgressBar();
	preloader_pb.source = thumb_loader.contentLoaderInfo;
	preloader_pb.x = thumb_loader.x;
	preloader_pb.y = thumb_loader.y;
	preloaders_mc.addChild(preloader_pb);
	preloader_pb.addEventListener(Event.COMPLETE, donePb);
}

Maar weet niet echt hoe 'k het ander moet aanpakken? Ga steeds alle images ophalen uit xml file & dan om de 250ms eentje tevoorschijn laten tonen..?
Of is er een andere/betere manier hiervoor?

(thx alvast)

Gerritn

Legacy Member
Object georienteerd werken:
Je kunt een klasse maken die een image bevat, en zijn bijhorende tween, dan per image een instantie van die klasse aanmaken, en dan bvb. de methode show() van dat object aanroepen, die de image zal tweenen. Zo kun je gewoon in je timer listener telkens een nieuwe instantie met zn eigen image aanmaken, en overschrijf je niks.

sh011265

Legacy Member
Gerritn zei:
Object georienteerd werken:
Je kunt een klasse maken die een image bevat, en zijn bijhorende tween, dan per image een instantie van die klasse aanmaken, en dan bvb. de methode show() van dat object aanroepen, die de image zal tweenen. Zo kun je gewoon in je timer listener telkens een nieuwe instantie met zn eigen image aanmaken, en overschrijf je niks.

I see.. Moet te doen zijn me dunkt, kan wellicht gewoonweg de image meegeven aan mn constructor & dan alle tweens erin toepassen..

Heb 't onmiddelijk s uitgeprobeerd & het valt precies wat moeilijker uit dan gedacht/gehoopt..

Heb inmiddels dit:
Waar mn thumbs worden opgehaald:
Code:
function thumbLoaded(e:Event):void{
	var my_thumb:Loader = Loader(e.target.loader);
	
	var afbeelding:MovieClip = new Afbeelding(my_thumb);
	afbeelding.show();
	container_mc.addChild(afbeelding.getImage());
}
Klasse Afbeelding ziet er dan zo uit:
Code:
package{
	import flash.display.*;
	import flash.events.*;
	import fl.transitions.Tween;
	import fl.transitions.easing.*;
	import fl.transitions.TweenEvent;	
	
	public class Afbeelding extends MovieClip{
		
		var thumb_loader:Loader;
		
		public function Afbeelding(thumb_loader1:Loader){
trace(thumb_loader1+"df");
			thumb_loader = thumb_loader1;
		}
		
		public function show(){
			//tweens
			trace(thumb_loader+"show");
			var position_x = Math.random()*900;
			var position_y = Math.random()*500;
			var tween1:Tween = new Tween(thumb_loader, "scaleX", Strong.easeIn, 0, 1, 1.5, true);
			var tween2:Tween = new Tween(thumb_loader, "scaleY", Strong.easeIn, 0, 1, 1.5, true);
			var tween3:Tween = new Tween(thumb_loader, "x", Regular.easeIn, 0, position_x, 1.5, true);
			var tween4:Tween = new Tween(thumb_loader, "y", Regular.easeIn, 0, position_y, 1.5, true);		
			
		}
		
		public function getImage():Loader{
			return thumb_loader;
		}
	}
}

Echter blijft t nog met momenten vast lopen. Ik denk dat'k het concept toch niet helemaal vat :) Ga 't s een nachtje laten liggen & hopelijk zie ik dan het licht :p Thx alvast!

sh011265

Legacy Member
'kgraak er niet uit..
Heb de aangemaakte objecten ook eens in een array bijgehouden maar nogsteeds blijven de tweens onderbroken worden..

Balen :)

Gerritn

Legacy Member
In die klasse moet je ook je Tweens als klasse variabelen zetten, desnoods private wel.

Gewoon boven je constructor al je tweens declareren.
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