Volledige versie bekijken : plaatje laden en hoogte en breedte verkleinen
omega_red
%Europe/Berlin %669 %2008, 16:03
hallo ik heb een vraagje
ik laad een plaatje in: _root.plaatje.loadMovie("Img0010.jpg"); en dat werkt.
en wil het plaatje verkleinen: _root.plaatje._width = _root.plaatje._height = 50;
tijdens het verkleinen moet de verhouding nog wel kloppen.
maar het verkleinen werkt niet.
alvast bedankt!
Jan
%Europe/Berlin %686 %2008, 16:29
Als de verhouding moet blijven kloppen kan je beter _xscale en _yscale gebruiken ipv _width en _height.
Nieuwe eigenschappen toekennen kan pas als jouw plaatje volledig geladen is want plaatje neemt automatisch de afmetingen aan van wat je er in laadt (van Img0010.jpg in dit geval)
Dus:
Of:
In een onEnterframe bijhouden hoeveel bytes er al geladen zijn en als plaatje.getBytesLoaded() gelijk is aan plaatje.getBytesTotal(), dan pas de nieuwe eigenschappen toekennen aan plaatje.
Of:
De MovieClipLoader class gebruiken (loadClip ipv loadMovie) die dit al ingebouwd heeft want daar kan je binnen de onLoadInit(dwz volledige geladen en beschikbaar) gewoon de nieuwe eigenschappen toekennen.
Jan
omega_red
%Europe/Berlin %702 %2008, 16:51
hi jan bedankt voor je reactie!
ik heb op frame1 het volgende geplaatst: _root.plaatje.loadClip("Img0010.jpg");
alleen word de foto niet geladen maar met loadMovie weer wel.
ik zal vast wel weer iets verkeerd doen..
Jan
%Europe/Berlin %714 %2008, 17:09
Hier is een voorbeeld met alle mogelijheden.
this.createEmptyMovieClip("holder",this.getNextHighestDepth());
//------------------------------------ MovieClip Loader Class ---------------------------
//---------------------------------------- New instance ---------------------------------
var mcLoader:MovieClipLoader=new MovieClipLoader()
//-------------------------------------- Listener Object -------------------------------
var listener:Object=new Object();
mcLoader.addListener(listener)
//--------------------------------- loadClip() method (functie) --------------------------
mcLoader.loadClip("http://users.telenet.be/jansurf/foto1.jpg",holder)
//------------------------------------- Event Handlers ---------------------------------
listener.onLoadStart=function(target:MovieClip)
{
trace("onLoadStart: Gestart met laden van: " + target._url + " in movieclip: " + target._name);
trace("__________________________________________________");
}
//----------------------------------------------------------------------------------------
listener.onLoadProgress=function(target:MovieClip, geladenbytes:Number,totaalbytes:Number)
{
trace("onLoadProgress: Bezig met laden van :" + target._url + " in movieclip: " + target._name);
trace("Procent geladen: " + Math.round((geladenbytes/totaalbytes)*100) + " %")
trace("__________________________________________________");
}
//-----------------------------------------------------------------------------------------
listener.onLoadComplete=function(target:MovieClip, httpStatus:Number)
{
target._xscale=50;
target._yscale=50;
trace("onLoadComplete: Gedaan met laden van :" + target._url + " in movieclip: " + target._name);
trace("httpStatus: " + httpStatus);
trace("De breedte van " + target._name + " wordt " + target._width);
trace("__________________________________________________");
}
//-----------------------------------------------------------------------------------------
listener.onLoadInit=function(target:MovieClip)
{
target._xscale=50;
target._yscale=50;
trace("onLoadInit: Movieclip: " + target._name + " is beschikbaar (voor nieuwe eigenschappen)");
trace("De breedte van: " + target._name + " wordt " + target._width);
trace("__________________________________________________");
}
//-----------------------------------------------------------------------------------------
listener.onLoadError=function(target:MovieClip, errorCode:String, httpStatus:Number)
{
trace("Fout ivm met laden van: " + target._url + " in movieclip: "+target._name);
trace("ErrorCode: " + errorCode);
trace("httpStatus: " + httpStatus);
trace("__________________________________________________");
}
In principe heb je enkel dit nodig:
var mcLoader:MovieClipLoader=new MovieClipLoader();
var listener:Object=new Object();
mcLoader.addListener(listener);
listener.onLoadInit=function(target:MovieClip)//target verwijst naar wat je bij loadClip zet: holder in dit geval
{
target._xscale=50;//dit kan je lezen als: holder._xscale=50;
target._yscale=50;
}
this.createEmptyMovieClip("holder",this.getNextHighestDepth());
mcLoader.loadClip("http://users.telenet.be/jansurf/foto1.jpg",holder);
omega_red
%Europe/Berlin %726 %2008, 17:25
hej nu doet het laden het, alleen zet hij het plaatje op een onlogische plaats.
Ik heb als bijlage het test bestandje toegevoegd.
is het ook mogelijk om een rand om die foto te genereren?
ik wil een foto slider maken zoals op de site van pathe.nl
thx
Jan
%Europe/Berlin %736 %2008, 17:40
Een onlogische plaats?
Je kan binnen de onLoadInit de plaats opgeven die jij wil. ;)
Een rand kan op veel manieren.
Ik heb geen CS3.
Jan
omega_red
%Europe/Berlin %739 %2008, 17:44
thx, ik had hem als flash 8 opgeslagen.
target._y=0;
target._x=0;
:P
had ik idd zelf ook kunnen bedenken sorry. d8 dat ie normaal in center werd geladen.
omega_red
%Europe/Berlin %681 %2008, 16:21
ik ben nu bezig met het maken van een border om de foto daarvoor wil ik een rechthoek die net iets groter is dan de foto achter de foto plaatsen zo lijkt het net dat het een rand is.
hiervoor gebruik ik de volgende code:
this.createEmptyMovieClip("plaatjeborder",10);
line_mc.beginFill(0xff0000,100);
line_mc.moveTo(0,0);
line_mc.lineTo(100,0);
line_mc.lineTo(100,200);
line_mc.lineTo(0,200);
line_mc.endFill();
line_mc._x = 100;
line_mc._y = 100;
maar hoe kan ik van die 100 en 200 waarde een variabele maken?
dit is mijn complete code:
var listener:Object = new Object();
var mcLoader:MovieClipLoader = new MovieClipLoader();
listener.onLoadInit = function(target:MovieClip) {
target._xscale = 50;
target._yscale = 50;
target._y = 0;
target._x = 0;
trace(_root.plaatje.width);
};
mcLoader.loadClip("http://users.telenet.be/jansurf/foto1.jpg",plaatje);
mcLoader.addListener(listener);
trace(_root.plaatje.width);
this.createEmptyMovieClip("plaatjeborder",10);
line_mc.beginFill(0xff0000,100);
line_mc.moveTo(0,0);
line_mc.lineTo(h,0);
line_mc.lineTo(h,200);
line_mc.lineTo(0,200);
line_mc.endFill();
line_mc._x = 100;
line_mc._y = 100;
het gekke is dat de rode code niet werkt maar de blauwe wel. vandaar wil ik ook de variabele toekennen op de plaats van de blauwe code.
(Andere suggesties voor het maken van een border zijn ook welkom :P)
thx!
omega_red
%Europe/Berlin %575 %2008, 13:48
iemand?
deresen
%Europe/Berlin %632 %2008, 15:10
Ik! :)
Stop eerst alles eens in een functie.
trace(_root.plaatje.width)
Dat is bij mij gewoon undefined, ik heb dan ook geen mc met instance name plaatje op mijn stage gezet, maar toch.
Ga eens kijken of je objecten wel bestaan. Zoals target in je onLoadInit.
En waarvoor gebruik je het object 'listener', die doet er helemaal niet toe.
De loadClip heb ik zelf nog nooit gebruikt. Maar ik heb jou script wel werkend gekregen, ik heb gewoon even op de F1 knop gedrukt terwijl loadClip gehighlight was. Zo ben ik eruit gekomen.
Daarnaast maak je nergens een line_mc aan, wat wel zou moeten.
En om het antwoord waar het allemaal om gaat te verklappen.
Om de hoogte en de breedte als variabele te zetten moet je het zo doen:
var hoogte:Number = 100;
var breedte:Number = 200;
line_mc.moveTo(0,0);
line_mc.lineTo(hoogte,0);
line_mc.lineTo(hoogte,breedte);
line_mc.lineTo(0,breedte);
Jan
%Europe/Berlin %856 %2008, 20:32
.width is de variabele binnen plaatje
._width is de property (breedte) van de MovieClip (wat jij wil te weten komen)
En binnen je onLoadInit zou dat trace(target._width) zijn, verwijzend naar "plaatje", of hetgeen je bij mcLoader.loadClip() hebt opgegeven.
En op de maintime line zou het trace(plaatje._width) zijn.
Jan
omega_red
%Europe/Berlin %521 %2008, 12:30
hallo,
tot nu toe is het allemaal goed gelukt.
maar kan ik van de volgende code ook een functie maken zodat ik meerdere plaatjes naast elkaar kan laden?
ik had al geprobeerd:
mcLoader.loadClip("2.jpg",holder);
mcLoader.loadClip("1.jpg",holder2);
maar dat werkte niet.
iemand een idee?
var listener:Object=new Object();
var mcLoader:MovieClipLoader=new MovieClipLoader()
this.createEmptyMovieClip("holder",this.getNextHighestDepth());
//----------------------------------------------------------------------------------------
listener.onLoadStart=function(target:MovieClip)
{
trace("Gestart met laden van " + target._url + " in " + target._name);
trace("De breedte van " + target._name + " wordt " + target._width);
trace("-------------------------------------------------------");
}
//----------------------------------------------------------------------------------------
listener.onLoadProgress=function(target:MovieClip, geladenbytes:Number,totaalbytes:Number)
{
trace("Bezig met laden van :" + target._url + " in " + target._name);
trace("Procent geladen :" + Math.round((geladenbytes/totaalbytes)*100) + " %")
trace("De breedte van " + target._name + " wordt " + target._width);
trace("-------------------------------------------------------");
}
//-----------------------------------------------------------------------------------------
listener.onLoadComplete=function(target:MovieClip, httpStatus:Number)
{
trace("onLoadComplete: Gedaan met laden van :" + target._url + " in " + target._name);
trace("httpStatus: " + httpStatus);
trace("De breedte van " + target._name + " wordt " + target._width);
trace("-------------------------------------------------------");
}
//-----------------------------------------------------------------------------------------
listener.onLoadInit=function(target:MovieClip)
{
target._xscale=10;
target._yscale=10;
target._x=5;
target._y=5;
trace("onLoadInit: Gedaan met laden van :" + target._url + " in " + target._name);
trace("De breedte van " + target._name + " wordt " + target._width);
//border maken
trace(x.drawRectangle(target._width + 10, target._height + 10, 0 , 0));
//border achter plaatje plaatsen
trace(x.swapDepths(holder));
trace("-------------------------------------------------------");
}
//-----------------------------------------------------------------------------------------
listener.onLoadError=function(target:MovieClip, errorCode:String, httpStatus:Number)
{
trace("Fout ivm met laden van :" + target._url + " in " + target._name);
trace("ErrorCode: " + errorCode);
trace("httpStatus: " + httpStatus);
trace("-------------------------------------------------------");
}
//-----------------------------------------------------------------------------------------
mcLoader.loadClip("2.jpg",holder);
mcLoader.addListener(listener);
//-----------------------------------------------------------------------------------------
//voor het maken van de border:
MovieClip.prototype.drawRectangle = function(w, h, l, t) {
var s:MovieClip = this.createEmptyMovieClip("s1", 1);
s.beginFill(0x00000, 100);
s.moveTo(l, h+t);
s.lineTo(w+l, h+t);
s.lineTo(w+l, t);
s.lineTo(l, t);
s.endFill();
};
// Create a new movieclip inside which you want to draw the rectangle
this.createEmptyMovieClip("x", 1);
// Call the method to draw rectangle with width and height as parameters
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.