vinTagesworld Flash forum
door W0utah op 04-01-07 om 11:56
Ik heb een fotoalbum gemaakt dat foto's inlaad via een xml bestand.
Maar het probleem is dat de foto's meestal veel te groot zijn om in een klein kadertje te tonen.
Hoe kan ik ze laten verkleinen in flash?
Want als ik altijd elke foto moet verkleinen in photoshop is dat veel werkt.
laatst ge-edit op: 04-01-07 om 13:24
Het lijkt me niet slim om alles op de op te grote afmetingen in te laden.
Ten eerste kost dit nutteloze bandwidth.
Ten tweede als je gaat resizen (wat niet echt berekend word) verlies je kwaliteit.
En ten derde zit er in photoshop een manier om te
batchen, je maakt daar dus een instelling (verkleinen en opslaan in andere map) en binnen no time heeft photoshop dat voor je gedaan (automatisch)
Maar als je dat toch allemaal niet wilt, dan kan je een laadclipje maken waarin je foto moet laden en die kan je resizen met _width en _height.
door W0utah op 04-01-07 om 12:37
dan van dat batchen zie ik wel zitten, hoe moet ik dat dan doen?
EDIT: had niet gezien dat het een link was, bedankt voor deze snelle informatie
EDIT2: het is nu gelukt, maar hoe kan ik nu ook maken dat als je in flash op die foto klikt hij die opent op ware grote?
laatst ge-edit op: 04-01-07 om 12:45
euhm...een linkje in je XML erbij zetten en zodra je op die foto klikt laad je die in.
Het zou makkelijker zijn om uit te leggen als je wat code gaf.
door W0utah op 04-01-07 om 13:22
dat linkje in xml file werkt niet
actionscript codedelay = 3000;
//-----------------------
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = [];
description = [];
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;
}
firstImage();
} else {
txt_tekst.text = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("foto.xml");
/////////////////////////////////////
p = 0;
// knoppen
bt_vorige.onRelease = function() {
myInterval = setInterval(pause_slideshow, delay);
prevImage();
};
bt_volgende.onRelease = function() {
myInterval = setInterval(pause_slideshow, delay);
nextImage();
};
// functies
this.onEnterFrame = function() {
filesize = holder.getBytesTotal();
loaded = holder.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (holder._alpha<100) {
holder._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
holder._alpha = 0;
holder.loadMovie(image[p], 1);
txt_tekst.text = description[p];
picture_num();
}
}
}
function prevImage() {
if (p>0) {
p--;
holder._alpha = 0;
holder.loadMovie(image[p], 1);
txt_tekst.text = description[p];
picture_num();
}
}
function firstImage() {
if (loaded == filesize) {
holder._alpha = 0;
holder.loadMovie(image[0], 1);
txt_tekst.text = description[0];
picture_num();
}
}
function picture_num() {
current_pos = p+1;
txt_nummer.text = current_pos+" / "+total;
}
Okay, ik begrijp niet alles, want nu is er toch ook niets wat de grotere fotos toont ?
Als het alleen een soort slideshow is die kleine images toont, dan moet het script uitgebreid worden, ik heb je code wat uitgebreid, maar niet getest, dus je zal wss moeten debuggen.
Maar nu zal je ongeveer zo'n XML code heben
code
<album>
<plaatje>blaat.jpg</plaatje>
<tekst>bla bla</tekst>
Daar moet nu een variable bijkomen, de url naar het grote plaatje
code
<album>
<plaatje>blaat.jpg</plaatje>
<tekst>bla bla</tekst>
<grootPlaatje>blaatGroot.jpg</grootPlaatje>
En je as moet ongeveer zo worden:
actionscript codedelay = 3000;
//-----------------------
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = [];
description = [];
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;
urlNaarGroot[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
}
firstImage();
} else {
txt_tekst.text = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("foto.xml");
/////////////////////////////////////
p = 0;
// knoppen
bt_vorige.onRelease = function() {
myInterval = setInterval(pause_slideshow, delay);
prevImage();
};
bt_volgende.onRelease = function() {
myInterval = setInterval(pause_slideshow, delay);
nextImage();
};
// functies
this.onEnterFrame = function() {
filesize = holder.getBytesTotal();
loaded = holder.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (holder._alpha<100) {
holder._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
holder._alpha = 0;
holder.loadMovie(image[p], 1);
txt_tekst.text = description[p];
holder.onRelease = function() {
//iets om de grotere foto te tonen
toonGroot_mc.loadMovie(urlNaarGroot[p], 1);
};
picture_num();
}
}
}
function prevImage() {
if (p>0) {
p--;
holder._alpha = 0;
holder.loadMovie(image[p], 1);
txt_tekst.text = description[p];
holder.onRelease = function() {
//iets om de grotere foto te tonen
toonGroot_mc.loadMovie(urlNaarGroot[p], 1);
};
picture_num();
}
}
function firstImage() {
if (loaded == filesize) {
holder._alpha = 0;
holder.loadMovie(image[0], 1);
txt_tekst.text = description[0];
holder.onRelease = function() {
//iets om de grotere foto te tonen
toonGroot_mc.loadMovie(urlNaarGroot[0], 1);
};
picture_num();
}
}
function picture_num() {
current_pos = p+1;
txt_nummer.text = current_pos+" / "+total;
}
hopelijk is dit wat je bedoeld.
door W0utah op 04-01-07 om 14:40
Kan je gwn een zipje maken met ook een paar fototjes erin en een klopende xml, dat scheelt mij een hoop werkt met het bij elkaar sprokkelen van fotos en zooi opslaan :)
/me is liever lui dan moe
laatst ge-edit op: 04-01-07 om 14:48
door W0utah op 04-01-07 om 14:48
ow, hij moet in een popup openen ?
door W0utah op 04-01-07 om 15:41
ja, als dat mogenlijk is
moet geen flashpopu zijn, mag ook gewoon een leeg venster
laatst ge-edit op: 04-01-07 om 15:41
Dit topic is gesloten.