Archief - FLASH : Images resizen die uit een XML komen

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.

NoFate

Legacy Member
kan iemand me even helpen met flash - xml - images

Ik heb maar een klein vraagje...
ik ben deze gallerij aant maken volgens deze tutorial: http://www.kirupa.com/developer/mx2004/xml_flash_photogallery2.htm

wel , dat werkt goed , de swf haalt images op uit een xml file
maar in het gallerijtje worden de foto"s op ware grootte geladen
ik wil dus erges in de code een aanpassing zodat de grootte van de image wordt geresized , of eventueel een aanpassing in de xml file?
kan iemand me zeggen hoe ik dit moet aanpassen ?

Heel hard bedankt!!!

manson

Legacy Member
zoals ik het zie:
je kan geen jpg's verkleinen of vergroten in actionscript, wat je wel kan doen is de movieclip herschalen waarin je jpg geladen wordt

als je bv een lege movieclip maakt (in as) en je laadt daar een jpg in dan zullen de _width en _height van die mc dezelfde zijn als de jpg
door deze mc nu te herschalen kan je je foto helemaal tonen in je gallerij

LunchBox

Legacy Member
aanvullend op manson zijn uitleg ziet het er dan zo uit:
(ter illustratie even met scale gewerkt, en die is procentueel)

// in de xml file voeg je onder iedere caption deze twee nodes toe
Code:
    <pic>
        <image>http://www.google.com/pompoensoep.jpg</image>
        <caption>pompoen soep</caption>
[B]		<width>50</width>
		<height>50</height>[/B]
    </pic>

// de actionscripting wordt dan zoiets: (aanpassingen in't vet)
--
Code:
function loadXML(loaded) {
	if (loaded) {
		xmlNode = this.firstChild;
		image = [];
		description = [];
[B]		width=[];
		height=[];[/B]
		total = xmlNode.childNodes.length;
		for (i=0; i<total; i++) {
			image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
			description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
[B]			width[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
			height[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;[/B]
		}
		firstImage();
	} else {
		content = "file not loaded!";
	}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
/////////////////////////////////////
listen = new Object();
listen.onKeyDown = function() {
	if (Key.getCode() == Key.LEFT) {
		prevImage();
	} else if (Key.getCode() == Key.RIGHT) {
		nextImage();
	}
};
Key.addListener(listen);
previous_btn.onRelease = function() {
	prevImage();
};
next_btn.onRelease = function() {
	nextImage();
};
/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
	filesize = picture.getBytesTotal();
	loaded = picture.getBytesLoaded();
	preloader._visible = true;
	if (loaded != filesize) {
		preloader.preload_bar._xscale = 100*loaded/filesize;
	} else {
		preloader._visible = false;
		if (picture._alpha<100) {
			picture._alpha += 10;
		}
	}
};
function nextImage() {
	if (p<(total-1)) {
		p++;
		if (loaded == filesize) {
			picture._alpha = 0;
			picture.loadMovie(image[p], 1);
			desc_txt.text = description[p];
			picture_num();
		}
	}
}
function prevImage() {
	if (p>0) {
		p--;
		picture._alpha = 0;
		picture.loadMovie(image[p], 1);
		desc_txt.text = description[p];
		picture_num();
	}
}
function firstImage() {
	if (loaded == filesize) {
		picture._alpha = 0;
		picture.loadMovie(image[0], 1);
		desc_txt.text = description[0];
		picture_num();
	}
}
function picture_num() {
	current_pos = p+1;
	[B]picture._xscale=width[p]
	picture._yscale=height[p][/B]
	pos_txt.text = current_pos+" / "+total;
}

NoFate

Legacy Member
hmz?
Kloppen die aanpassingen in die code wel?

picture._xscale=width[p]
picture._yscale=height[p]

Deze 2 regels heb je gezet bij de functie van de teller , die teller heeft niets te maken met het tonen van de image?

Of ben ik verkeerd ? Het lukt me allessinds niet op die manier

Bedankt

LunchBox

Legacy Member
de teller is steeds het laatste dat wordt opgeroepen dah's waar, maar hij wordt weldegelijk opgeroepen in alle benodigde functies: firstImage(), prevImage(), nextImage()

kheb het voorbeeld eerst getest voor ik het instuurde (wat'k altijd doe in feite) en het werkt perfect hier. als je wil stuur ik je mijn .fla/.xml even door - al is het gewoon letterlijk wat hier staat.

*edit: tis laat en'k heb morgenvroeg ook les dus kheb het even online gezet, om te illustreren dat die picture_num(); ook bij de eerste run werkt heb ik de eerste op 50% geladen, de tweede op 100%, de derde op 25% etc..

wat je trouwens zegt over die teller functie is juist ze, maar het werkt wel in dit voorbeeld. betere oplossing zou zijn het "tonen van de afbeelding" volledig in een eigen functie te steken. reden dat ze hier voor deze langere methode hebben gekozen is uiteraard om het geheel niet al te complex voor te stellen, plus je ziet ook meteen de logica dat een afbeelding waarnaar je teruggaat niet meer moet voorgeladen worden terwijl ééntje verder in de rij dat wel nodig heeft.
Code:
		picture._alpha = 0;
		picture.loadMovie(image[p], 1);
		desc_txt.text = description[p];
		picture_num();
kan dus in een eigen functie toonAfbeelding() bijvoorbeeld, en daar steek je dan best het resizen van een ingeladen afbeelding bij.

NoFate

Legacy Member
aha , het werkt wel !!

denk dak erges een foutje heb gecopy/paste :-)

Allessinds heel hard bedankt hoor!!!

Thnx

Bigbuddha

Legacy Member
tja, beetje een logge oplossing. Zo moet je voor idere pic je xml nog eens aanpassen. Waarom niet gewoon in je AS een maxWidht en maxHeight zetten.

Dan kan je met een beetje logisch nadenken een klein rescale functietje maken die dan de geladen clip resized met de juiste verhouding. Dan moet je niet telkens de afmeetingen bij je xml zetten.

Let wel op dat als je verkleint, je foto's niet meer zo goed zijn, altijd wat clipping te zien.

NoFate

Legacy Member
uhmm bigbuddha

Ik ken niets van xml of flash hoor

Je mag het script altijd aanpassen als je veel goesting en tijd hebt :)

De bedoeling is eigenlijk een gallerij te maken in flash , deze gallerij moet dan foto's uit een map halen, automatisch
Kan je zoeits in elkaar flatsen denk je?

Ik zou je heel dankbaar zijn, misschien kan ik je iets teruggeven als je wil...

Thnx
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