PDA

Volledige versie bekijken : Controleren van het formaat van je XML foto's met action script


Moz-Art
%Europe/Berlin %631 %2008, 16:09
Hoi, Ik ben nieuw hier en ben aan't leren om XML galerijen te maken met actionscripts.

Het is me gelukt beelden in te laden in mijn movieclip vanuit een XML file samen met de bijhorende text. Volgende en vorige foto knoppen zitten er ook in. Wat me echter niet lukt is om de foto's die in de movieclip verschijnen te controleren met AS3. Mijn foto's hebben niet allemaal dezelfde grote of aspect ratio. Ik wil dat flash een vergelijking maakt met de afmetingen van de movieclip en de image. Vergelijk x en y van de foto met die van de movieclip en behoud de aspect ratio door de grootste zijde te nemen van de image en die te resizen naar de grootste afmeting van de zijde van de clip.

kan iemand me helpen hoe ik dit moet realiseren? ik kan dit wel doen met foto's die in de Library staan met deze code:

Picture._xscale = picture._yscale = Math.min(Picture._xscale, Picture._yscale);
Picture._x = Holder._x-Picture._width/2;
Picture._y = Holder._y-Picture._height/2;

Alvast bedankt.

Moz-Art

ar34z
%Europe/Berlin %646 %2008, 16:30
Je zou kunnen proberen de afbeeldingen die je hebt ingeladen te plaatsen in een tijdelijke movieclip (stuk voor stuk). De movieclip krijgt dan de afmetingen van de afbeelding die erin zit. Zo kun je de breedte en hoogte uitlezen.

Voorbeeld (uit de handleiding):
Ik neem aan dat je de afbeeldingen met een Loader inlaadt?

var pictLdr:Loader = new Loader();
var pictURL:String = "banana.jpg"
var pictURLReq:URLRequest = new URLRequest(pictURL);
pictLdr.load(pictURLReq);
pictLdr.contentLoaderInfo.addEventListener(Event.C OMPLETE, imgLoaded);
function imgLoaded(event:Event):void
{
var tmpMC:MovieClip = new MovieClip();
tmpMC.addChild(pictLdr.content);
trace("Breedte: " + tmpMC.width + "\nHoogte: " + tmpMC.height);
}


Vergeet niet de nodige classes te importeren.

Moz-Art
%Europe/Berlin %677 %2008, 17:14
Hoe zou ik dat hier dan inpassen. Sorry ben echt beginneling en dit is mijn eerste code voor een galerij.

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 {
content = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("data.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;
pos_txt.text = current_pos+" / "+total;
}

Jan
%Europe/Berlin %680 %2008, 17:20
Je script is helemaal AS2, terwijl je hier in de AS3 rubriek zit. ;)
Jan

ar34z
%Europe/Berlin %726 %2008, 18:26
Je script is helemaal AS2, terwijl je hier in de AS3 rubriek zit. ;)
Jan
Inderdaad, probeer eerste je code in AS3 werkend te maken. Dat wil zeggen:
zorg dat je de bestandsnamen (of welke data dan ook) uit de XML file krijgt en ze weer kunt geven dmv trace.

Moz-Art
%Europe/Berlin %955 %2008, 23:55
Kan iemand me helpen met het script om te zetten naar AS3?

Jan
%Europe/Berlin %017 %2008, 01:24
http://livedocs.adobe.com/flex/2/langref/migration.html
En verder veel op F1 drukken en de basis van AS3 leren:
http://www.flashfocus.nl/forum/showthread.php?t=6338

Jan