I seem to remember encountering this problem as well a while back. I think the problem is that you are accessing the loader's info before the loader has a chance to finishing loading them.
If you're inside complete event dispatcher you might try callLater() and see if that works. I wish I could remember the solution, but it's something like that. Charlie On Wed, Feb 25, 2009 at 10:12 AM, byte.sensei <byte.sen...@yahoo.com> wrote: > OK, this works great when I run the application locally, but when I > upload to the server and run it from there the images aren't being > resized (no error message - nothing happens). I tracked the problem > down to: > > > var img_width:int = img.content.loaderInfo.width; > var img_height:int = img.content.loaderInfo.height; > > These statements work fine when running the Flex app locally, but > they cause the function to stop execution when executing the Flex app > from the web server. If I place an Alert before these statements it > displays fine, but if I place an Alert after these statements it > never shows up. > > Any ideas why the content.loaderInfo would work fine locally but end > up null or undefined when running from the web server? Why the > difference? What can I do to ensure this works on the server? > > Thanks! > > --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, > "byte.sensei" <byte.sen...@...> > wrote: > > > > Thanks for the insight. I did something very similar, although I'm > > using HBox/VBox components to layout my app so I had to put a VBox > > wrapper around the image like this: > > > > <mx:VBox id="image_01_wrapper" width="100" > > height="100%" verticalAlign="middle" horizontalAlign="center"> > > <mx:Image id="image_01" > > source="{'http://media.basspro.com/'+current_product.image_url_01}" > > complete="{image_resize(image_01,100,75)}" alpha="0"/> > > </mx:VBox> > > > > Then my image_resize() function takes an Image object and desired > > width/height as parameters: > > > > private function image_resize > > (img:Image,w:int,h:int):void { > > var img_width:int = > > img.content.loaderInfo.width; > > var img_height:int = > > img.content.loaderInfo.height; > > > > if (img_width/img_height >= w/h) { > > //image is wider than box > > proportions - resize based on width > > img.width = w; > > img.height = w/img_width*img_height; > > } else { > > //image is taller than box > > proportions - resize based on height > > img.height = h; > > img.width = h/img_height*img_width; > > } > > //Alert.show(img.width.toString() + "x" + > > img.height.toString()); > > > > var fade_in:Fade = new Fade(); > > fade_in.target = img; > > fade_in.alphaFrom = 0; > > fade_in.alphaTo = 1; > > fade_in.play(); > > > > } > > > > > > I also added the fade in tween so that the images gradually fade in > > when they have been resized. Anyway, your code below got me going. > > Thanks! > > > > -Dan > > > > > > --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Fotis > Chatzinikos > > <fotis.chatzinikos@> wrote: > > > > > > For something similar i do the following, you should be able to > > change it to > > > do what you want quite easily..: > > > > > > <mx:Image > > > id="selectedProductImageID" > > > verticalCenter="0" > > > complete="imageLoaded()" > > > source="{selectedPhoto}" > > > left="5" > > > /> > > > > > > Now the important bit is the "complete="imageLoaded()": > > > > > > and the imageLoaded function: > > > > > > private function imageLoaded():void > > > { > > > if > (selectedProductImageID.content.loaderInfo.width > > >= > > > selectedProductImageID.content.loaderInfo.height) > > > { > > > selectedProductImageID.width = 330; > > > selectedProductImageID.height = > > > > > > 330*selectedProductImageID.content.loaderInfo.height/selectedProductIm > > ageID.content.loaderInfo.width > > > ; > > > } > > > else > > > { > > > selectedProductImageID.height = 330 ; > > > selectedProductImageID.width = > > > > > > 330*selectedProductImageID.content.loaderInfo.width/selectedProductIma > > geID.content.loaderInfo.height; > > > } > > > } > > > > > > On Mon, Feb 23, 2009 at 9:36 PM, byte.sensei <byte.sensei@> > > wrote: > > > > > > > I have an app that loads several images into mx:Image tags > with > > > > scaleContent=true and width=160 / height=120. The problem is > not > > all of > > > > my images have these proportions, and for odd sized images they > > end up > > > > being loaded into the upper left hand corner instead of > centered > > in the > > > > restricting image box. > > > > > > > > All I'm trying to do is have a box 160x120 pixels, then load in > > images > > > > of various sizes dynamically and have them 1) scale to fit > within > > this > > > > box, and 2) render centered vertically/horizontally in this > box. > > Is > > > > there any way I can do this not knowing the actual image sizes > > (and > > > > using images of different proportions)? > > > > > > > > Thanks! > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Fotis Chatzinikos, Ph.D. > > > Founder, > > > Phinnovation > > > Fotis.Chatzinikos@, > > > > > > > >