Archief - FLASH: Image loaden, height > 0

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.

Avalanched

Legacy Member
ik wil een een image loaden ( via XML file (loadMovie)) .. dat lukt maar als ik height en width opvraag geeft hij 0
als ik hem probeer te veranderen doet hij niets
wat doe ik mis ?

PHP:
//load XML (frame 1 > root)

function loadXML(loaded) {
	if (loaded) {
		xmlNode = this.firstChild;
		aImage = [];
		aSubj = [];
		aDescription = [];
		nTotal = xmlNode.childNodes.length;
		for (i=0; i<nTotal; i++) {
			aImage[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
			aSubj[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
			aDescription[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
		}
		_root.balk.loadContent(aImage);
	} else {
		content = "file not loaded!";
	}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");

// mc balk: frame 1

function loadContent(aImage) {
	var image:MovieClip = this.createEmptyMovieClip("image", this.getNextHighestDepth());
	loadMovie(aImage[0], _level0.balk.image);
	trace(_level0.balk.image._height);
	trace(_root.balk.image._height);
}


// XML FILE

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
    <pic>
        <image>http://www.i3s.unice.fr/I3S/FR/LABORATOIRE/PLAN/MAP/plan_region.jpg</image>
        <title>Plaatje 1</title>
	<desc>test0r</desc>
    </pic>
</images>

Breen

Legacy Member
Het lijkt mij dat je files nog niet ingeladen zijn, als je de height probeert op te vragen & aan te passen, zet daar hetvolgende ff:

PHP:
function loadContent(aImage) { 
    var image:MovieClip = this.createEmptyMovieClip("image", this.getNextHighestDepth()); 
    loadMovie(aImage[0], _level0.balk.image); 

    image.onEnterFrame = function() {
        if (this.getBytesLoaded == this.getBytestotal) {
           _level0.balk.image._height = //uw waarde 
           _root.balk.image._height =  //uw waarde
delete this.onEnterFrame
        }
    }
}

*edit* k heb "delete this.onEnterFrame" toegevoegd, nogal essentieel :)

Col.Kurtz

Legacy Member
_root.balk.loadContent(aImage)

Dit zal al zeker niet werken, "this" kan je niet gebruiken, loadContent is maar een gewone functie, geen method van een movieclip, dit kan je zo oplossen :

MovieClip.prototype.loadContent=function(...) {
...
}

Ander simpel voorbeeld van een prototype

Code:
MovieClip.prototype.getName = function() {
	trace(this._name);
};
//
_root.mc.getName();

En waarom zou je alles in een array proppen om achteraf die array terug af te lopen en movieclips te maken, dit kan je toch in de eerste lus doen.

Via initobject kan je dan de titel enzo meegeven, bv :

var img = _root.createEmptyMovieClip('img_'+i,i);
img.title = ...
enz

PS groeten aan de pille ;)
stefan

manson

Legacy Member
gebruik eens de moviecliploader class, dan heb je een hele reeks listeners ter beschikking om acties te ondernemen voor, tijdens en na het laden
de onLoadInit bv is perfect geschikt voor de hoogte en andere gegevens van je ingeladen object/movieclip op te vragen alvorens dat getoond wordt

@col.kurtz
wat je zegt klopt niet en prototypes zijn hier helemaal niet nodig
als de functie loadcontent en de movieclip staat dan kan hij perfect aan de functie via _root.balk.#FUNCTIENAAM# (hoewel ik _root absoluut zou afraden, beter is relatief te werken ipv absoluut)

+

alles in een array steken is zeker handig, wil je later de data van die mc's nog eens hebben dan heb je ze mooi in een array steken
kan nooit kwaad om wat ruimte te laten voor eventuele latere aanpassingen

ieps

Legacy Member
Col.Kurtz zei:
_PS groeten aan de pille ;)

alsof de pille da zou geven, in mijnen tijd ni alvast :)
mijn gok is dat het een (mede-) mct-er is, flash productsite opdracht tegen +- vrijdag :)

Col.Kurtz

Legacy Member
ieps zei:
alsof de pille da zou geven, in mijnen tijd ni alvast :)
mijn gok is dat het een (mede-) mct-er is, flash productsite opdracht tegen +- vrijdag :)
Neenee, tis ene vant sisa, zeker weten :)

ieps

Legacy Member
grote stap vooruit dan, impressive :)

bij ons was preloader het enige datk nog kan herinneren van een heel jaar :) gezellige lessen waren dat wel :)

Breen

Legacy Member
Idd, grote vooruitgang voor de pille, Jonas, ik denk zelfs dat die een familielid van Jef is, aangezien hij ook in Beveren-waas woont :)

Bigbuddha

Legacy Member
manson zei:
gebruik eens de moviecliploader class, dan heb je een hele reeks listeners ter beschikking om acties te ondernemen voor, tijdens en na het laden
de onLoadInit bv is perfect geschikt voor de hoogte en andere gegevens van je ingeladen object/movieclip op te vragen alvorens dat getoond wordt

@col.kurtz
wat je zegt klopt niet en prototypes zijn hier helemaal niet nodig
als de functie loadcontent en de movieclip staat dan kan hij perfect aan de functie via _root.balk.#FUNCTIENAAM# (hoewel ik _root absoluut zou afraden, beter is relatief te werken ipv absoluut)

+

alles in een array steken is zeker handig, wil je later de data van die mc's nog eens hebben dan heb je ze mooi in een array steken
kan nooit kwaad om wat ruimte te laten voor eventuele latere aanpassingen

what he said ;)
Mooie handige correcties.

Misschien nog een kleine uitbreiding dat je voor de moveicliploader class best eerst MovieClipLoader.loadClip() bekijkt. Als je daar aan uit kan, ben je vertrokken voor een zalige ontdekking van simpel preloaden ;)

Avalanched

Legacy Member
Nee nee, ik zit wel degelijk op sisa en heb wel degelijk les van de pille, nix tege de pille ma verder dan preloaden is hij ook ni echt gekomen in actionscript :)

wij zitten nu op stage .. wat weer knap geregeld is door den BRAL !:ironic:
en moet een soort van photographers portofolio maken
maja ..

merci voor den uitleg allesinds!

Avalanched

Legacy Member
Je MOET de MovieClipLoader class gebruiken .. als je het doet zoals breen .. Freezed je height en width .. wat dus redelijk fucked up is als ge iets wilt opvragen of veranderen

met de MovieClipLoader class load hij alles perfect en met init kan je het simpel veranderen :applause:

thx to all

zo heb ik het gedaan als iemand nog opmerkingen heeft let me know

PHP:
function loadContent(nTotal:Number, aImage:Array) {
	var my_mcl:MovieClipLoader = new MovieClipLoader();
	var myListener:Object = new Object();
	var nxFrame:Number = 0;
	myListener.onLoadStart = function(target_mc:MovieClip) {
		var loadProgress:Object = my_mcl.getProgress(target_mc);
	};
	myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
		trace(loadedBytes+" = bytes loaded at progress callback");
		trace(totalBytes+" = bytes total at progress callback");
	};
	myListener.onLoadComplete = function(target_mc:MovieClip) {
		var loadProgress:Object = my_mcl.getProgress(target_mc);
		trace(loadProgress.bytesLoaded+" = bytes loaded at end");
		trace(loadProgress.bytesTotal+" = bytes total at end");
	};
	myListener.onLoadInit = function(target_mc:MovieClip) {
		target_mc._width = 40;
		target_mc._height = 40;
		target_mc._x += nxFrame;
		nxFrame += 50;
		trace("Movie clip _x = "+target_mc+" ="+target_mc._x);
                trace("Movie clip _y = "+target_mc+" ="+target_mc._y);
                trace("Movie clip _width = "+target_mc+" ="+target_mc._width);
                trace("Movie clip _height = "+target_mc+" ="+target_mc._height);
	};
	myListener.onLoadError = function(target_mc:MovieClip, errorCode:String) {
		trace("ERROR CODE = "+errorCode);
		trace("Your load failed on movie clip = "+target_mc+"\n");
	};
	my_mcl.addListener(myListener);
	for (var i = 0; i<nTotal; i++) {
		trace("test");
		this.createEmptyMovieClip("clip_mc"+i, this.getNextHighestDepth());
		my_mcl.loadClip(aImage[i], "clip_mc"+i);
	}
}

Avalanched

Legacy Member
Nu Laad hij niet alle images, soms 2 soms 3 .. en het rare is .. als ik mijn images op 40*40 zet
terwijl men blokjes 46*46 zijn .. dan zijn die images even groot als die blokskes
Wat doe ik nu nogaltijd verkeerd ?

Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
    <pic>
        <image>http://www.macromedia.com/software/drk/images/box_drk5.jpg</image>
        <title>Plaatje 1</title>
	<desc>test0r</desc>
    </pic>
    <pic>
        <image>http://www.nahaboo.net/photos/annie-photo-small.jpg</image>
        <title>Plaatje 1</title>
	<desc>test0r</desc>
    </pic>
    <pic>
        <image>http://bilkis.nahaboo.net/bilkis-photo-small.jpg</image>
        <title>Plaatje 1</title>
	<desc>test0r</desc>
    </pic>
    <pic>
        <image>http://www.nahaboo.net/photos/vincent-photo-small.jpg</image>
        <title>Plaatje 1</title>
	<desc>test0r</desc>
    </pic>
</images>

PHP:
function loadXML(loaded) {
	if (loaded) {
		xmlNode = this.firstChild;
		aImage = [];
		aSubj = [];
		aDescription = [];
		nTotal = xmlNode.childNodes.length;
		for (i=0; i<nTotal; i++) {
			aImage[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
			aSubj[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
			aDescription[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
		}
		_root.balk.loadContent(nTotal, aImage);
	} else {
		content = "file not loaded!";
	}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.php");

///////////////////////////////////////////////////

function drawRectangle(mcClip:MovieClip, nWidth:Number, nHeight:Number):Void {
	mcClip.lineStyle(0, 0, 100);
	mcClip.beginFill(0, 100);
	mcClip.lineTo(nWidth, 0);
	mcClip.lineTo(nWidth, nHeight);
	mcClip.lineTo(0, nHeight);
	mcClip.lineTo(0, 0);
	mcClip.endFill();
}
///////////////////////////////////////////////////
function loadContent(nTotal:Number, aImage:Array) {
	var my_mcl:MovieClipLoader = new MovieClipLoader();
	var myListener:Object = new Object();
	var nxFrame:Number = 3;
	var nyFrame:Number = 3;
	var nxBlok:Number = 0;
	myListener.onLoadStart = function(target_mc:MovieClip) {
		var loadProgress:Object = my_mcl.getProgress(target_mc);
	};
	myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
	};
	myListener.onLoadComplete = function(target_mc:MovieClip) {
		var loadProgress:Object = my_mcl.getProgress(target_mc);
	};
	myListener.onLoadInit = function(target_mc:MovieClip) {
		// you can now do any setup required, for example:
		target_mc._width = 40;
		target_mc._height = 35;
		target_mc._y = nyFrame;
		target_mc._x += nxFrame;
		nxFrame += 50;
		trace("Movie clip _x = "+target_mc+" ="+target_mc._x);
		trace("Movie clip _y = "+target_mc+" ="+target_mc._y);
		trace("Movie clip _width = "+target_mc+" ="+target_mc._width);
		trace("Movie clip _height = "+target_mc+" ="+target_mc._height);
	};
	myListener.onLoadError = function(target_mc:MovieClip, errorCode:String) {
		trace("*********First my_mcl instance*********");
		trace("ERROR CODE = "+errorCode);
		trace("Your load failed on movie clip = "+target_mc+"\n");
	};
	my_mcl.addListener(myListener);
	for (var i = 0; i<nTotal; i++) {
		var blok:MovieClip = this.createEmptyMovieClip("blok"+[i], this.getNextHighestDepth());
		drawRectangle(blok, 46, 46);
		_root.balk["blok"+i]._x += nxBlok;
		nxBlok += 50;
		this.createEmptyMovieClip("clip_mc"+i, this.getNextHighestDepth());
		my_mcl.loadClip(aImage[i], "clip_mc"+i);
	}
}

manson

Legacy Member
aantal opmerkingen:
.waarom zou je nTotal als arg doorgeven terwijl je ook aImage.length kan doen
.de x en y waardes aanpassen in je onLoadInit vind ik ook niet echt consequent, kan je beter doen op het ogenblik dat je die mc werkelijk aanmaakt
.ik snap niet goed wat die nxFrame en nyFrame doen ... gaat dat over het aantal per rij/kolom ? zoja dan bestaan daar toch betere manieren voor
.wat ik ook doe als ik dit wil bekomen is alles van mcl (moviecliploaderclass) in die for lus zetten
bv
Code:
for (var i = 0; i<reeks.fotos.length; i++) {
			...
                        // MOVIECLIPLOADER
			var foto_mcl = new MovieClipLoader();
			var foto_listener = new Object();
			//
			foto_listener.onLoadStart = function(target_mc:MovieClip) {
				...
			};
			foto_listener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
				...
			};
			foto_listener.onLoadInit = function(target_mc:MovieClip) {
				...
			};
			foto_mcl.addListener(foto_listener);
			foto_mcl.loadClip(_global.URL+"fotos/large/"+reeks.fotos[i].foto, cont_mc);
		}

Avalanched

Legacy Member
nu showt hij alle images maar niet in volgorde als dat het in XML staat.. hij gaat zelf een volgorde kiezen ..

wss zal da wel liggen aan het feit da de images die eerst geladen worden eerst staan

en omdat die images pas worden aangepast in den init da het ni op volgorde komt maar als ik die uit men init zet doen ze die bewerkingen niet .. :(

iemand een idee om die toch foto / foto te laden ?!

manson

Legacy Member
de volgende foto inladen als de vorige is ingeladen ? :)
maak van heel dat gedoe een functie en werk met een teller ofzo die je telkens er een is ingeladen verhoogd wordt en de functie opnieuw oproept tot er geen foto's meer zijn

Avalanched

Legacy Member
zo werkt het ook ;)
PHP:
function loadContent(aImage:Array) {
	drawBlocks(aImage);
	for (i = 0; i < aImage.length; i++) {
		this.createEmptyMovieClip("clip_mc" + i, this.getNextHighestDepth());
		var nxFrame:Number = 3;
		var nyFrame:Number = 3;
		var nxBlok:Number = 0;
                this["clip_mc"+i]._y = nyFrame;
                this["clip_mc"+i]._x = nxFrame;
		nxFrame += 50;
		var myListener:Object = new Object();
		myListener.onLoadInit = function(target_mc:MovieClip) {
			// you can now do any setup required
			target_mc._width = 40;
			target_mc._height = 40;
		};
		var my_mcl:MovieClipLoader = new MovieClipLoader();
		my_mcl.addListener(myListener);
		my_mcl.loadClip(aImage[i], "clip_mc" + i);
	}
}
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