Dikke edit, ik heb een (mss duidelijker) voorbeeld gemaakt voor javascript hieronder.
[/edit]
Hoewel mijn probleem in flash afspeelt, heeft dit niets te maken met mn eigenlijk probleem.
Ik heb een code-snippit gemaakt (flash) om een en ander te verduidelijken, maar een oplettende lezer zal het probleem (zonder code) wel snappen en misschien de oplossing geven
[SWF(width = "500", height = "250")] //afmetingen van de swf
//onderstaande regel is voor jullie onbelangrijk
stage.align = StageAlign.TOP_LEFT;
//Wel belangrijk...
//rechthoek van 600 * 300, in de linkerbovenhoek uitgelijnt (te groot volgens de afmetingen van de swf)
var rect:MovieClip = new MovieClip(); //onze rechthoek
rect.graphics.beginFill (0x000000); //de kleur van het rechthoekje (zwart)
rect.graphics.drawRect (0, 0, 600, 300); // x: 0, y:0, en 600 * 300 px breed/lang
addChild(rect)
//een factor..
var teGroot:Number = 1.25;
//BELANGRIJK om te weten:
//1 = orginele afmeting....1.25 is dus 25% groter en .75 is 25% kleiner
//SCALE de rechthoek adhv de breedte van 'het scherm' PLUS factor teGroot (wordt dus full width + nog iets meer..)
rect.width = (stage.stageWidth * teGroot); //rechthoek 'factor' groter maken als 'het scherm'
rect.scaleY = rect.scaleX; //hoogte van rechthoek EVENREDIG schalen aan de geschaalde breete
/****************************PROBLEEM****************************
Nu is de rechthoek dus 'factor' te groot..
Hoe kom ik nu een nieuwe 'factor' te weten om het geheel TERUG te schalen naar de breedte van 'het scherm' ?
*/
trace(rect.width) //625
trace(rect.height) //312.5
trace(rect.scaleX) //1.0416666666666667
trace(rect.scaleY) //logisch...zelfde als scaleX
//maar ik wil dus weten welke 'scaleX' ik nu nodig heb om het (adhv de breedte) nodig heb om het naar 100% width te scalen
/*
rect.huidigeBreedte naar huidigeSchremBreedte
*/
[SWF(width = "500", height = "250")]//afmetingen van de swf
//onderstaande regel is voor jullie onbelangrijk
stage.align = StageAlign.TOP_LEFT;
//Wel belangrijk...
//rechthoek van 600 * 300, in de linkerbovenhoek uitgelijnt (te groot volgens de afmetingen van de swf)
var rect:MovieClip = newMovieClip(); //onze rechthoek
rect.graphics.beginFill(0x000000); //de kleur van het rechthoekje (zwart)
Hoe kom ik nu een nieuwe 'factor' te weten om het geheel TERUG te schalen naar de breedte van 'het scherm' ?
*/
trace(rect.width)//625
trace(rect.height)//312.5
trace(rect.scaleX)//1.0416666666666667
trace(rect.scaleY)//logisch...zelfde als scaleX
//maar ik wil dus weten welke 'scaleX' ik nu nodig heb om het (adhv de breedte) nodig heb om het naar 100% width te scalen
/*
rect.huidigeBreedte naar huidigeSchremBreedte
*/
Wat er dus eigenlijk moet gebeuren...:
ik laad een foto in (rect in het script)
de foto is te groot voor het scherm, dus scale ik hem naar de afmeting van het scherm, maar 'factor' groter, omdat ik de foto later wil animeren naar de breedte van het scherm.
Dus foto is bv 1500 px
Scale foto naar (schermWidth * factor)
en daarna scale foto naar schermwidth => wat is de factor/berekening om van 1.25 naar 1(*regel 21*) te gaan..?
nuja, als je die '5*4' dynamisch kan maken adhv een random grote (van scherm en/of image) wel
Ik zoek dat dus niet echt
kijk, ik laad een foto in.
Mijn scherm is bv 1000*500
De in te laden foto is 1650 * 800
ik wil de foto groter of kleiner scalen om hem volledig (PLUS factor) te tonen.
nadat de volledige foto een tijdje in beeld was, wil ik hem uitZoomen naar 100% beeldBreedte.
De foto scalen naar schermbreedte * factor is geen probleem, maar welke factor heb ik nodig NADAT ik de foto schaalde naar 1.25 om hem 'schermbreedte' te maken.
Maar ik weet de berekening niet voor (schermBreed * factor) => schermBreedte
is het niet handiger om de dimensies van de foto in een variabele vast te houden, de foto te scalen naar gewenste grootte en dan die variabele terug op te roepen om te foto terug te scalen naar originele grootte ?
een foto die iemand upload heeft nooit dezelfde dimensies dan de foto waarmee jij het gaat testen. Is dus moeilijk om met telkens dezelfde factor te gaan werken. Schermbreedtes zijn ook nooit dezelfde. als jij een 21" hebt en ik een 19" dan kloppen die waardes ook niet meer...
ik upload een zooi foto's (maakt niet uit welke size, maar ze zijn altijd LOEI GROOT)
de foto's worden in flash ingeladen en geschaald naar schermbreedte * factor, zo maakt de shermreso niets uit, ze zijn -minimaal- fullWidth, ook al zou de foto 5*5 px zijn..
nadat de foto een tijdje in beeld was, moet deze 'krimpen' tot schermBreedte (en hier loop ik vast)
ter info, ik kan achter de afmetingen komen van schermSize en originele fotoSize (sterker, ik weet ze al ).
mss is mn vraagstelling nogal moeilijk, maar ism voorgaande posts is het volgende mss duidelijker:
1.25 [berekening] = schermWidth
schermWidth is bekend, maar wat is de factor van 1.25 naar schermWidth
de uitkomst moet iets zijn van 0.iets
bv .765
Dit komt in mijn probeersels het meest in de richting (maar is niet juist)
Hoe langer ik erover nadenk, hoe minder ik het begrijp.
Wat ik uit alles dus begrijp zijn 2 dingen:
Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan naar de afmetingen van het scherm schalen.
zo ja, dan het volgende:
Mijn Hoofd schreef:
SWF:
w = 500
h = 250
Afbeelding inladen:
w = 600
h = 300
Afbeelding groter schalen:
w = 625
h = 312.5
Praktische berekening:
500 x 1.25 = 625
250 x 1.25 = 312.5
nu wilt ge die afbeelding naar de groote van het scherm (SWF)?
625 x 0.8 = 500
312.5 x 0.8 = 250
Uw factor in deze berekening is dan 0.8
MAAR...
dan klopt die berekening van 1.0416666666666667 niet meer...
Zo neen, het volgende:
Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan terug naar de afmetingen van de originele groote schalen.
Mijn Hoofd schreef:
SWF:
w = 500
h = 250
Afbeelding inladen:
w = 600
h = 300
Afbeelding groter schalen:
w = 625
h = 312.5
Praktische berekening:
600 : 0.96 = 625
300 : 0.96 = 312.5
nu wilt ge die afbeelding naar de groote van het scherm (SWF)?
625 x 0.96 = 600
312.5 x 0.96 = 300
Uw factor in deze berekening is dan 0.96
EN...
dan klopt die berekening van 1.0416666666666667 weer wel...
MAAR...
Dan is deze nog altijd te groot voor het scherm (SWF)
Ik weet dat het al laat is (5 uur gepasseerd) en het kan daar aan liggen dat ik dingen door elkaar gooi, maar ik begin er hoe langer hoe minder van te snappen...
Hoe langer ik erover nadenk, hoe minder ik het begrijp.
Wat ik uit alles dus begrijp zijn 2 dingen:
Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan naar de afmetingen van het scherm schalen.
zo ja, dan het volgende:
Mijn Hoofd schreef:
SWF:
w = 500
h = 250
Afbeelding inladen:
w = 600
h = 300
Afbeelding groter schalen:
w = 625
h = 312.5
Praktische berekening:
500 x 1.25 = 625
250 x 1.25 = 312.5
nu wilt ge die afbeelding naar de groote van het scherm (SWF)?
625 x 0.8 = 500
312.5 x 0.8 = 250
Uw factor in deze berekening is dan 0.8
MAAR...
dan klopt die berekening van 1.0416666666666667 niet meer...
Zo neen, het volgende:
Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan terug naar de afmetingen van de originele groote schalen.
Mijn Hoofd schreef:
SWF:
w = 500
h = 250
Afbeelding inladen:
w = 600
h = 300
Afbeelding groter schalen:
w = 625
h = 312.5
Praktische berekening:
600 : 0.96 = 625
300 : 0.96 = 312.5
nu wilt ge die afbeelding naar de groote van het scherm (SWF)?
625 x 0.96 = 600
312.5 x 0.96 = 300
Uw factor in deze berekening is dan 0.96
EN...
dan klopt die berekening van 1.0416666666666667 weer wel...
MAAR...
Dan is deze nog altijd te groot voor het scherm (SWF)
Ik weet dat het al laat is (5 uur gepasseerd) en het kan daar aan liggen dat ik dingen door elkaar gooi, maar ik begin er hoe langer hoe minder van te snappen...
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<style>
*{margin: 0; padding:0;}
#foto{
width: 125%; /*zie deze!!*/
height:100px;
background-color:#000;
color:#fff;
margin-top:15px;
}
</style>
<div id="foto">klik me, ik ben 125% breed van de schermbreedte</div>
<script>
var screenSize;
$("#foto").click(function () {
screenSize= $(window).width(); //moet je weten
var fotoWidth = $("#foto").width(); //moet je imo ook weten
//foute berekening, pls help me met deze!!
var procent = (fotoWidth - screenSize) * .75;
//uitvoeren met procent
$("#foto").effect("scale", {
percent: procent, //met deze var
direction: 'horizontal'
},
500,
onComplete = finale
);
});
function finale()
{
if($("#foto").width != screenSize){
var msg = "Helaas, je berekening is fout, de nieuwe width moet "+screenSize+" zijn, maar is nu "+$("#foto").width()
$("#foto").html(msg);
}
else
{
alert("woohoo...het is je blijkbaar gelukt!/nGimme the code pls!")
}
}
</script>