PDA

Volledige versie bekijken : moviecliploader probleem


beele
%Europe/Berlin %645 %2009, 16:29
Ik ben bezig met een foto-album te maken, en het is zo goed als af nu :). Er is echter nog een groot probleem dat ik niet opgelost krijg. Als je op volgende foto klikt en de foto begint met laden, dan gebeurd het soms (volledig random) dat de moviecliploader precies blijft hangen, hij doet niets voor enkele seconden, en dan wordt plots de preloader getoond en de afbeelding ingeladen. Ik heb me al suf gezocht, maar kan niet vinden waar dit probleem zich nu net situeerd.

men swf bestaat uit drie frames.

frame 1: hier wordt een XML ingeladen waar de namen van alle albums instaan.

stop();
_global.j=0;
_global.pad = "";
_global.zoomON = 0;
_global.afbeelding = [];
_global.beschrijving = [];
/////////////////////////////////////////////////////////////
//Inladen van master XML bestand/////////////////////////////
/////////////////////////////////////////////////////////////
function loadXML(geladen)
{
if(geladen)
{
lijst = [];
xmlNode = this.firstChild;
totaal = xmlNode.childNodes.length;
for (i=0; i<totaal; i++)
{
lijst[i] = xmlNode.childNodes[i].firstChild.nodeValue;
}
vulKeuzeLijst(lijst, totaal);
}
else
{
content = "bestand niet geladen!";
}
}
xmlDataMaster = new XML();
xmlDataMaster.ignoreWhite = true;
xmlDataMaster.onLoad = loadXML;
xmlDataMaster.load("http://www.beeles-place.be/kempo/xml/list.xml");
/////////////////////////////////////////////////////////////
//Invullen van de keuzelijst/////////////////////////////////
/////////////////////////////////////////////////////////////
vulKeuzeLijst = function()
{
albums.addItem({label:"Kies een album", data:"null"});
for(i = 1; i<totaal;i++)
{
albums.addItem({label:lijst[i], data:lijst[i]});
trace(lijst[i] + " toegevoegd");
}
}
var listener:Object = new Object();
listener.change = function() {
trace("Je selecteerde: "+ albums.selectedItem.data);
if(albums.selectedItem.data == "null")
{
trace("kies een album");
}else{
_global.laadpad = albums.selectedItem.data;
j=0;
gotoAndStop(2);
}
};
albums.addEventListener("change",listener);

op frame 2: hier worden de gegevens uit frame 1 gebruikt om elk XML bestand voor elk respectievelijk album in te laden.
stop();
loading._visible = false;
load_text._visible = false;
/////////////////////////////////////////////////////////////
//Inladen van foto XML bestand///////////////////////////////
/////////////////////////////////////////////////////////////
function loadXML(geladen)
{
if (geladen)
{
afbeelding.splice(0);
beschrijving.splice(0);
xmlNode = this.firstChild;
totaal = xmlNode.childNodes.length;
for (i=0; i<totaal; i++)
{
afbeelding[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
beschrijving[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
}
gotoAndStop(3);
}
else
{
content = "bestand niet geladen!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("http://www.beeles-place.be/kempo/xml/"+laadpad);

op frame 3: hier worden de afbeeldingen geladen, en gebeurd ook de besturing van het foto-album.
stop();
pad = "";
if(j==0)
{
zoomer._visible = false;
}
album_text._visible = true;
load_text._visible = false;
album_text.textfield.text = "U koos voor het album " + laadpad + ".\n\n\n"
+ "Om te beginnen klikt u op volgende.\n\n"
+ "Om in te zoomen klikt u op de 'zoom +' knop "
+ ". Om terug uit te zoomen klikt u gewoon ergens "
+ "op de foto.\n\n"
+ "Om een foto te downloaden klikt u op de "
+ "foto. Een nieuw browservenster zal zich openen "
+ "met de originele afbeelding, om deze dan "
+ "op te slaan klikt u rechts en kies afbeelding opslaan als.";

this.createEmptyMovieClip("holder_mc", this.getNextHighestDepth());
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
/////////////////////////////////////////////////////////////
//besturing van het foto-album///////////////////////////////
/////////////////////////////////////////////////////////////
var keyListener:Object = new Object();
keyListener.onKeyDown = function()
{
if(Key.getCode() == Key.LEFT)
{
zoomer._visible = true;
vorige();
}
else if(Key.getCode() == Key.RIGHT)
{
zoomer._visible = true;
volgende();
}
};
Key.addListener(keyListener);

next_btn.onRelease = function()
{
zoomer._visible = true;
volgende();
};
previous_btn.onRelease = function()
{
zoomer._visible = true;
vorige();
};
function volgende()
{
if(j<totaal)
{
j++;
setFoto();
}
}
function vorige()
{
if(j>1)
{
j--;
setFoto();
}
}
function setFoto()
{
load_text._visible = true;
album_text._visible = false;

pad = afbeelding[j-1];
desc_txt.text = beschrijving[j-1];

pos_txt.text = j+" / "+totaal;

mcl.unloadClip(holder_mc); //oude foto uitladen.
mcl.loadClip(pad, holder_mc); //nieuwe foto inladen.
}
/////////////////////////////////////////////////////////////
//foto-inladen///////////////////////////////////////////////
/////////////////////////////////////////////////////////////
listener.onLoadStart = function(target:MovieClip)
{
trace("----------------------------------------------------------------------------");
trace("gestart met laden in : " + target);
loading._visible = true;
load_text._visible = true;
}
listener.onLoadProgress = function(target:MovieClip, geladen:Number, totaal:Number)
{
//trace("target: "+ target);
//trace("geladen bytes: " + geladen);
//trace("totaal bytes: " + totaal);
var percent:Number= Math.round(geladen/totaal*100);
loading.progress._xscale = percent;
trace(percent + " %");
}
listener.onLoadComplete = function(target:MovieClip)
{
loading._visible = false;
load_text._visible = false;
trace("inladen compleet");
}
listener.onLoadInit = function(target:MovieClip)
{
trace("nu op de stage");
trace("w: " + target._width +"\nh: " + target._height);
holder_mc._xscale = 100;
holder_mc._yscale = 100;
scale_x = (458 / target._width) * 100; //458 = max afmeeting x
scale_y = (458 / target._height) * 100; //458 = max afmeeting y
trace("x-scale: " + scale_x +"\ny-scale: " + scale_y);
if(scale_x < 100 || scale_y < 100)
{
if(scale_x < scale_y)
{
holder_mc._xscale = scale_x;
holder_mc._yscale = scale_x;
}
else
{
holder_mc._xscale = scale_y;
holder_mc._yscale = scale_y;
}
}
holder_mc._x = Stage.width/2-holder_mc._width/2;
holder_mc._y = 20;

holder_mc.onRelease = function()
{
if(zoomOn == 0)
{
getURL(pad, "_blank");
}
else
{
zoomOn = 0;
holder_mc._xscale = testx;
holder_mc._yscale = testy;
holder_mc._x = locx;
holder_mc._y = locy;
masker.gotoAndStop(1);
}
}
}

er zitten verder nog wat movieclips op de stage, maar die zorgen voor extra's en hebben niet iets direct te maken met het laden van de afbeeldingen.

Een voorbeeld van een in te laden xml bestand met foto's:

<?xml version="1.0" encoding="iso-8859-1" ?>
- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <images>
- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>[URL]http://www.beeles-place.be/kempo/images/imas08/PICT1151.JPG</image>

<caption>PICT1151.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1152.JPG</image>

<caption>PICT1152.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1153.JPG</image>

<caption>PICT1153.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1154.JPG</image>

<caption>PICT1154.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1155.JPG</image>

<caption>PICT1155.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1157.JPG</image>

<caption>PICT1157.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1158.JPG</image>

<caption>PICT1158.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1159.JPG</image>

<caption>PICT1159.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1160.JPG</image>

<caption>PICT1160.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1161.JPG</image>

<caption>PICT1161.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1162.JPG</image>

<caption>PICT1162.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1163.JPG</image>

<caption>PICT1163.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1164.JPG</image>

<caption>PICT1164.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1165.JPG</image>

<caption>PICT1165.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1168.JPG</image>

<caption>PICT1168.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1169.JPG</image>

<caption>PICT1169.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1170.JPG</image>

<caption>PICT1170.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1171.JPG</image>

<caption>PICT1171.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1172.JPG</image>

<caption>PICT1172.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1174.JPG</image>

<caption>PICT1174.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1175.JPG</image>

<caption>PICT1175.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1176.JPG</image>

<caption>PICT1176.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1177.JPG</image>

<caption>PICT1177.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1178.JPG</image>

<caption>PICT1178.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1179.JPG</image>

<caption>PICT1179.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1180.JPG</image>

<caption>PICT1180.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1181.JPG</image>

<caption>PICT1181.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1184.JPG</image>

<caption>PICT1184.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1186.JPG</image>

<caption>PICT1186.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1187.JPG</image>

<caption>PICT1187.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1188.JPG</image>

<caption>PICT1188.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1189.JPG</image>

<caption>PICT1189.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1190.JPG</image>

<caption>PICT1190.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1191.JPG</image>

<caption>PICT1191.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1192.JPG</image>

<caption>PICT1192.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1195.JPG</image>

<caption>PICT1195.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1196.JPG</image>

<caption>PICT1196.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1197.JPG</image>

<caption>PICT1197.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1198.JPG</image>

<caption>PICT1198.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1200.JPG</image>

<caption>PICT1200.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1202.JPG</image>

<caption>PICT1202.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1203.JPG</image>

<caption>PICT1203.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1204.JPG</image>

<caption>PICT1204.JPG</caption>

</pic>


- (http://www.beeles-place.be/kempo//xml/Imas%202008.xml#) <pic>
<image>http://www.beeles-place.be/kempo/images/imas08/PICT1205.JPG</image>

<caption>PICT1205.JPG</caption>

</pic>


</images>




en een van de php bestanden die je apart aanroept als je het album aanpast:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XML Updater: kempo foto-album</title>
<style type="text/css">
<!--
body {
background-color: #000;
}
.lettertype {
font-family: Papyrus;
}
.lettertype {
color: #FF0;
}
-->
</style><body>
<div align="center">
<p>
<?php
$directoryToOpen = 'images/imas08/'; //bv: images/pictures/ ==> Relatief pad waar de afbeeldingen staan!!
$nameToSave = 'Imas 2008.xml'; //bv: images.xml ==> Deze naam zal te zien zijn in flash!!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Hieronder NIETS aanpassen!!////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$myFile = "xml/$nameToSave";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = '<?xml version="1.0" encoding="iso-8859-1"?><images>';
fwrite($fh, $stringData);
$handler = opendir($directoryToOpen);

while ($file = readdir($handler))
{
if($file != '..' && $file != '.')
{
$stringData = "<pic><image>http://www.beeles-place.be/kempo/$directoryToOpen$file</image><caption>$file</caption></pic>";
fwrite($fh, $stringData);
}
}
closedir($handler);
$stringData = '</images>';
fwrite($fh, $stringData);
fclose($fh);
include('list.php');
?>
</p>
<p class="lettertype"><span class="lettertype">U hebt een kempo foto-album upgedate.</span></p>
<p class="lettertype"><span class="lettertype">Shaoling Chu-an Fa Kempo.</span></p>
</div>
<form>
<div align="center">
<input type="button" name="Exit" value="Pagina sluiten" onClick="javascript:exit()">
</div>
</form>
<div align="center">
<script>
function exit(){
close();
}
</script>
</div>
</body>
</html>

Een voorbeeld vindt je op: http://kempo.beeles-place.be/foto.html

Weet er iemand waarom er een vertraging optreed voor het inladen start? (en het heeft niets met de server te maken imo)

beele
%Europe/Berlin %665 %2009, 16:58
niemand?

kkouw
%Europe/Berlin %561 %2009, 14:28
De actionscript voor de preloader moet je wel in een loop zetten. Anders check hij maar 1x hoever hij geladen is. Met een onEnterFrame kijk hij iedere keer hoever (%) hij geladen is.

beele
%Europe/Berlin %605 %2009, 15:32
De actionscript voor de preloader moet je wel in een loop zetten. Anders check hij maar 1x hoever hij geladen is. Met een onEnterFrame kijk hij iedere keer hoever (%) hij geladen is.

met de moviecliploader is dit niet nodig, deze gaat de onLoadProgress elke keer callen als er iets gewijzigd is.

beele
%Europe/Berlin %648 %2009, 16:33
echt niemand?

Jan
%Europe/Berlin %696 %2009, 17:43
echt niemand?
Je eerste post al eens bekeken?
Da's voor de meesten onder ons een overdaad aan info en script.
En zonder één enkele tab of inspringen ook een onleesbaar rommeltje van jewelste. (is niet jouw fout)

Korter gesteld:
Jouw probleem:
Waarom zit er zoveel tijd tussen het uitvoeren van deze functie
function setFoto()
{
load_text._visible = true;
album_text._visible = false;
pad = afbeelding[j-1];
desc_txt.text = beschrijving[j-1];
pos_txt.text = j+" / "+totaal;
mcl.unloadClip(holder_mc); //oude foto uitladen.
mcl.loadClip(pad, holder_mc); //nieuwe foto inladen.
}

en het krijgen van de eerste trace hier:
listener.onLoadStart = function(target:MovieClip)
{
trace("gestart met laden in : " + target);
}

Althans dat is je vraag/probleem denk ik.

Verder zou je nooit _global hoeven/mogen gebruiken en ook het verspreiden van dit soort scripts over meerdere frames is echt geen goed idee. Je hoeft trouwens geen unload te doen als je een nieuwe foto inlaadt. Flash overschrijft vanzelf die oude foto.

Groeten;
Jan

beele
%Europe/Berlin %730 %2009, 18:32
Dit is inderdaad het probleem.

De eerste en tweede frames dienen enkel om de xml bestanden te laden, verder worden deze frames niet gebruikt zolang je niet op de knop klikt om een ander album te bekijken. Ik weet dat het gebruik van globals niet de super correcte manier is, maar dit kan hier toch niet echt iets mee te maken hebben, als ik een trace doe naar de data achter een global var, werkt dit toch perfect?