PDA

Volledige versie bekijken : Foto's inladen


override
%Europe/Berlin %564 %2005, 14:32
Ik ben redelijk nieuw in Flash en probeer nu een Foto Album te maken. De namen van de foto's worden geladen uit een MySQL-db en via PHP naar Flash doorgegeven. Tot zover lijkt alles goed te werken.

Nu stuit ik op allerlei problemen.

Het eerste probleem is dat hij 5 van de 43 foto's niet laadt. Ik heb geen idee waarom...

Het tweede is dat ik niet automatisch de foto's kan verkleinen omdat ze eerst volledig moeten geladen zijn en ik kan er maar geen deftige controle voor vinden.

En tenslotte mijn derde probleem waarbij ik bij elke nieuwe MC een actie wil plaatsen en geen idee heb hoe dat dynamisch moet.

Mijn code:



stop();
var l;
var images_lv = new LoadVars();
images_lv.onLoad = function(success) {
if (success) {
var images_array = this.pics.split(";");
loadImages(images_array);
}
};

loadImages = function (arr) {
l = arr.length;
var aantal = 0;
var top = 10;
var left = 10;
for (var i = 0; i<l; i++) {
currentClip = createEmptyMovieClip("imgShell"+i, 9999-i);
currentClip.loadMovie("images/covers/"+arr[i]);

currentClip._y = top;
currentClip._x = left;
aantal++;
if (aantal == 10) {
top = top+50;
left = 10;
aantal = 0;
} else {
left = left+50;
}
}
};
images_lv.load("flashcovers.php");

function resizePics() {
for (var i = 0; i<l; i++) {
var foto_breedte = _root["imgShell"+i]._width;
var foto_hoogte = _root["imgShell"+i]._height;
while (foto_breedte>50 || foto_hoogte>50) {
foto_breedte = foto_breedte/1.1;
foto_hoogte = foto_hoogte/1.1;
}
this["imgShell"+i]._width = foto_breedte;
this["imgShell"+i]._height = foto_hoogte;
}
}

Is er iemand die me kan helpen aub?? Ik heb het hele web al afgezocht en niets lijkt te helpen.. Alvast bedankt

2nd day
%Europe/Berlin %570 %2005, 14:40
als ik het goed heb heb je er geen preloader bij zitten ofwel? Vind ik zelf wel redelijk belangrijk bij een fotoalbum (tenzij ie niet online hoeft) Ook zie ik niet wanneer de pics geresized moeten worden. Ik zie de resizePics functie wel, maar ik zie m niet aangeroepen worden, is dit al je code?

override
%Europe/Berlin %580 %2005, 14:55
Nee er zit inderdaad geen preloader bij omdat niets lijkt te werken (of ik doe het op de verkeerde manier) en de foto's worden geresized bij het klikken op een knop wat eigenlijk automatisch zou moeten gebeuren wanneer de foto's volledig ingeladen zijn.

Buiten de knop die de functie oproept om te resizen is dit dus alle code.

Flasher
%Europe/Berlin %604 %2005, 15:29
Het eerste probleem is dat hij 5 van de 43 foto's niet laadt. Ik heb geen idee waarom...

zijn alle foto's wel niet-progressieve jpeg bestanden?? --anders kan flash ze niet inladen

2nd day
%Europe/Berlin %628 %2005, 16:05
heb je de php-file toevallig online staan? dan kan ik m ook gebruiken voor wat tests...

override
%Europe/Berlin %700 %2005, 17:48
php-file --> http://movies.override.be/flashcovers.php

Dauntless
%Europe/Berlin %709 %2005, 18:01
php-file --> http://movies.override.be/flashcovers.php
En ben je zeker dat alle foto's niet progressive zijn?

override
%Europe/Berlin %714 %2005, 18:09
Sorry maar weet niet goed wat progressive betekent...

Dauntless
%Europe/Berlin %716 %2005, 18:11
Sorry maar weet niet goed wat progressive betekent...
Dat kan je selecteren wanneer je met bv photoshop een afbeeldign opslaat als .jpg.

override
%Europe/Berlin %717 %2005, 18:12
wanneer ik de foto open, opsla en terug upload gaat ie wel

hoe kan dat?

override
%Europe/Berlin %726 %2005, 18:25
ok ik ga de foto's die niet werken vervangen, probleem 1 is dus al opgelost

nu zou ik wel eens willen weten hoe ik in mijn script een simpele preloader kan inbouwen...

alvast bedankt voor de positieve reacties!

Dauntless
%Europe/Berlin %748 %2005, 18:57
wanneer ik de foto open, opsla en terug upload gaat ie wel

hoe kan dat?
Omdat flash nu eenmaal geen progressive JPG's kan inladen :).

En een preloader: kijk hierboven bij de tutorials of de .fla's, er staan er wel wat tussen.

2nd day
%Europe/Berlin %841 %2005, 21:12
ok, ik was toevallig bezig aan net zo iets, dus ik heb mijn code ff aangepast aan jouw situatie... hier is t, als je vragen hebt, stel ze!
stop();
var l;
var images_lv = new LoadVars();
images_lv.onLoad = function(success) {
if (success) {
var images_array = this.pics.split(";");
loadpos = 0;
loadImages(images_array);
}
};
loadImages = function (arr) {
l = arr.length;
var top = 10;
var left = 10;
var total = 0;
currentClip = createEmptyMovieClip("imgShell"+loadpos, _root.getNextHighestDepth());
currentClip.loadMovie("images/covers/"+arr[loadpos]);
currentClip._alpha = 0;
currentClip._y = top;
currentClip._x = left;
if (loadpos == 0) {
_root.createEmptyMovieClip("holder", _root.getNextHighestDepth());
_root.holder.createTextField("preloader", 1, -5, -5, 300, 50);
}
this.onEnterFrame = function() {
var total = currentClip.getBytesTotal();
var loaded = currentClip.getBytesLoaded();
var perc = loaded/total*100;
var loadtext = "bezig met laden van cover "+(loadpos+1)+":\n"+Math.round(perc)+"%";
_root.holder.preloader.text = loadtext;
if (loaded>=total and total>0) {
if (loadpos !== l-1) {
resizePic();
positionPic();
loadpos++;
loadImages(arr);
} else {
removeMovieClip("holder");
resizePic();
positionPic();
delete this.onEnterFrame;
}
}
};
};
images_lv.load("http://movies.override.be/flashcovers.php");
function resizePic() {
var foto_breedte = _root["imgShell"+loadpos]._width;
var foto_hoogte = _root["imgShell"+loadpos]._height;
while (foto_breedte>50 || foto_hoogte>50) {
foto_breedte = foto_breedte/1.1;
foto_hoogte = foto_hoogte/1.1;
}
this["imgShell"+loadpos]._width = foto_breedte;
this["imgShell"+loadpos]._height = foto_hoogte;
}
function positionPic(){
this["imgShell"+loadpos]._x = (loadpos%10)*50;
this["imgShell"+loadpos]._y = Math.floor(loadpos/10)*50;
this["imgShell"+loadpos]._alpha = 30;
}

override
%Europe/Berlin %854 %2005, 21:30
dit is prachtig!!! vriendelijk bedankt :-)

nog één bijkomend vraagje, hoe kan je een functie oproepen wanneer je bijvoorbeeld op de geladen MC's klikt ?

2nd day
%Europe/Berlin %862 %2005, 21:41
ik neem aan dat dat ook een dynamische functie moet zijn? Ik doe dit zelf door zoiets als dit:currentClip.onRelease = function(){
//wat je wilt doen
}
deze code zou ik na dit gedeelte zetten: "if (loaded>=total and total>0) {"

override
%Europe/Berlin %884 %2005, 22:13
dan lijkt ie 't alleen te doen bij de laatste clip...

wanneer ik dan een functie maak zoals resizePic(); en positionPic(); herkent ie wel iets maar voert de actie niet uit..

2nd day
%Europe/Berlin %902 %2005, 22:39
weet je t zeker? bij mij werkt dit gewoon:
stop();
var l;
var images_lv = new LoadVars();
images_lv.onLoad = function(success) {
if (success) {
var images_array = this.pics.split(";");
loadpos = 0;
loadImages(images_array);
}
};
loadImages = function (arr) {
l = arr.length;
var top = 10;
var left = 10;
var total = 0;
currentClip = createEmptyMovieClip("imgShell"+loadpos, _root.getNextHighestDepth());
currentClip.loadMovie("images/covers/"+arr[loadpos]);
currentClip._alpha = 0;
currentClip._y = top;
currentClip._x = left;
if (loadpos == 0) {
_root.createEmptyMovieClip("holder", _root.getNextHighestDepth());
_root.holder.createTextField("preloader", 1, -5, -5, 300, 50);
}
this.onEnterFrame = function() {
var total = currentClip.getBytesTotal();
var loaded = currentClip.getBytesLoaded();
var perc = loaded/total*100;
var loadtext = "bezig met laden van cover "+(loadpos+1)+":\n"+Math.round(perc)+"%";
_root.holder.preloader.text = loadtext;
if (loaded>=total and total>0) {
currentClip.onRelease = function(){
trace(this._name);
}
if (loadpos !== l-1) {
resizePic();
positionPic();
loadpos++;
loadImages(arr);
} else {
removeMovieClip("holder");
resizePic();
positionPic();
delete this.onEnterFrame;
}
}
};
};
images_lv.load("http://movies.override.be/flashcovers.php");
function resizePic() {
var foto_breedte = _root["imgShell"+loadpos]._width;
var foto_hoogte = _root["imgShell"+loadpos]._height;
while (foto_breedte>50 || foto_hoogte>50) {
foto_breedte = foto_breedte/1.1;
foto_hoogte = foto_hoogte/1.1;
}
this["imgShell"+loadpos]._width = foto_breedte;
this["imgShell"+loadpos]._height = foto_hoogte;
}
function positionPic(){
this["imgShell"+loadpos]._x = (loadpos%10)*50;
this["imgShell"+loadpos]._y = Math.floor(loadpos/10)*50;
this["imgShell"+loadpos]._alpha = 30;
}


maar ja... wat het ook kan zijn is dat omdat je een plaatje in een movieclip laad de acties voor de movieclip vervallen (klinkt misschien raar en ongeloofwaardig, maar t is echt waar)... wat je dan moet doen is een emptymovieclip in de imgShell maken dus dit: currentClip = createEmptyMovieClip("imgShell"+loadpos, _root.getNextHighestDepth());
currentClip.createEmptyMovieClip("holder", 1);
currentClip.holder.loadMovie("images/covers/"+arr[loadpos]);
currentClip.holder._alpha = 0;
currentClip._y = top;
currentClip._x = left;
if (loadpos == 0) {
_root.createEmptyMovieClip("holder", _root.getNextHighestDepth());
_root.holder.createTextField("preloader", 1, -5, -5, 300, 50);
}
this.onEnterFrame = function() {
var total = currentClip.holder.getBytesTotal();
var loaded = currentClip.holder.getBytesLoaded();
moet je ff line 16 tot line 28 vervangen met het bovenstaande...

override
%Europe/Berlin %921 %2005, 23:06
Ik wou ff proberen met volgende functie de alpha te veranderen naar 100 bij het selecteren van de muis met volgene code:

(let op actionPic)

stop();
var l;
var images_lv = new LoadVars();
images_lv.onLoad = function(success) {
if (success) {
var images_array = this.pics.split(";");
loadpos = 0;
loadImages(images_array);
}
};
loadImages = function (arr) {
l = arr.length;
var top = 10;
var left = 10;
var total = 0;
currentClip = createEmptyMovieClip("imgShell"+loadpos, _root.getNextHighestDepth());
currentClip.loadMovie("images/covers/"+arr[loadpos]);
currentClip._alpha = 0;
currentClip._y = top;
currentClip._x = left;
if (loadpos == 0) {
_root.createEmptyMovieClip("holder", _root.getNextHighestDepth());
_root.holder.createTextField("preloader", 1, -5, -5, 300, 50);
}
this.onEnterFrame = function() {
var total = currentClip.getBytesTotal();
var loaded = currentClip.getBytesLoaded();
var perc = loaded/total*100;
var loadtext = "bezig met laden van cover "+(loadpos+1)+":n"+Math.round(perc)+"%";
_root.holder.preloader.text = loadtext;
if (loaded>=total and total>0) {
if (loadpos !== l-1) {
resizePic();
positionPic();
actionPic();
loadpos++;
loadImages(arr);
} else {
removeMovieClip("holder");
resizePic();
positionPic();
actionPic();
delete this.onEnterFrame;
}
}
};
};
images_lv.load("http://movies.override.be/flashcovers.php");
function resizePic() {
var foto_breedte = _root["imgShell"+loadpos]._width;
var foto_hoogte = _root["imgShell"+loadpos]._height;
while (foto_breedte>50 || foto_hoogte>50) {
foto_breedte = foto_breedte/1.1;
foto_hoogte = foto_hoogte/1.1;
}
this["imgShell"+loadpos]._width = foto_breedte;
this["imgShell"+loadpos]._height = foto_hoogte;
}
function positionPic(){
this["imgShell"+loadpos]._x = (loadpos%10)*50;
this["imgShell"+loadpos]._y = Math.floor(loadpos/10)*50;
this["imgShell"+loadpos]._alpha = 50;
}
function actionPic(){
this["imgShell"+loadpos].onRollOver = function(){
this["imgShell"+loadpos]._alpha = 100;
_root.txtTest.text = "test";
}
}

Ik heb dus even ook een tekstveld aangemaakt en daar toont ie wel "test". Die alpha werkt niet.

Dauntless
%Europe/Berlin %927 %2005, 23:15
Zo?

function actionPic(){
this["imgShell"+loadpos].onRollOver = function(){
this._alpha = 100;
_root.txtTest.text = "test";
}
}

override
%Europe/Berlin %930 %2005, 23:19
Ja zo :) Bedankt voor al je hulp!

Knul
%Europe/Berlin %636 %2005, 16:16
ik ben niet zo goed in flash.
ik ben net begonnen met het maken van een site, ik wil een aparte foto pagina maken met behulp van het inladen van de foto's omdat hij anders veel en veel te groot word.
maar ik weet niet hoe ik dat moet doen, heb was mijn bedoeling om omgeveer 12 foto's in te laden op 1 frame...
kan iemand mij helpen???
die codes die al in dit onderwerp stonden snap ik ook helemaal niks van... anders zou ik die misschien kunnen gebruiken (misschien kan dat zowiezo wel, maar ik weet niet hoe en weet niet wat hij allemaal doet met die codes (action script))