---
title: "Få bild att anpassa storlek"
type: "forum-thread"
url: "https://www.webforum.nu/amne/flash/157811-få-bild-att-anpassa-storlek"
topic: "Flash"
topic_url: "https://www.webforum.nu/amne/flash"
author: "silfver"
published: "2007-03-03T14:23:30.000Z"
updated: "2007-03-13T18:34:11.000Z"
replies: 6
views: 521
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/flash/157811-få-bild-att-anpassa-storlek"
---

# Få bild att anpassa storlek

## #1 — silfver, 2007-03-03T14:23Z

Jag har den här koden som läser in en bild i ett movieclip jag gjort: 

```
x.onLoad = function() {
	var images:Array = this.firstChild.childNodes;
	for(i=0;i<images.length;i++) {
		urls.push(images[i].attributes.url);
		captions.push(images[i].attributes.caption);
	}
	holder.loadMovie(urls[0]);
	caption.text = captions[0];
	current = 0;
}
```

 Problemet är att själva rutan är 800x600 pixlar. Läser jag in en stor bild, låt säga 1280x1024 så ser jag ju bara en bråkdel av bilden.

Hur ska man skriva så att bilden anpassar sig till 800x600? Jag vill inte sätta måttet på bilden till 800x600 så att proportionerna blir fel utan jag vill fortfarande få samma proportioner i bilden.

Förstår ni hur jag menar? :)

Permalänk: https://www.webforum.nu/p/157811

## #2 — Blixtsystems, 2007-03-03T15:36Z

Först och främst bör du köra MovieClipLoader för att kunna kolla när bilden laddat...den måste vara laddad innan du kan kolla storlek.
Lite kod:

```
var my_mcl:MovieClipLoader=new MovieClipLoader();
var myListener:Object = new Object();
myListener.owner=this;
myListener.onLoadInit = function (target_mc:MovieClip) {
	var imgW:Number=800;
	var imgH:Number=600;
	if (w>imgW) {
		xPc = (w*100)/imgW;
	}
	if (h>imgH) {
		yPc = (h*100)/imgH;
	}
	if (xPc>yPc) {
		target_mc._width /= (xPc/100);
		target_mc._height /= (xPc/100);
	} else {
		target_mc._width /= (yPc/100);
		target_mc._height /= (yPc/100);
	}
};
my_mcl.addListener(myListener);
my_mcl.loadClip(url, holder);
```

En liten varning....om du publicerar för Flash 8 kan bilderna se lite fula ut då de skalas om du inte omvandlar de till ett bitmap object med smoothing.
Lite info om problemet och kod för att lösa det:
<http://www.kaourantin.net/2005/12/dynamically-loading-bitmaps-with.html>

Permalänk: https://www.webforum.nu/p/1941932

## #3 — silfver, 2007-03-03T17:18Z

Tack för koden! Men jag får det inte riktigt att fungera. Vart skall den appliceras? Detta är all min kod:

```
var x:XML = new XML();
x.ignoreWhite = true;

var urls:Array = new Array();
var captions:Array = new Array();
var current:Number;

x.onLoad = function() {
	var images:Array = this.firstChild.childNodes;
	for(i=0;i<images.length;i++) {
		urls.push(images[i].attributes.url);
		captions.push(images[i].attributes.caption);
	}
	holder.loadMovie(urls[0]);
	caption.text = captions[0];
	current = 0;
}

x.load("images.xml");

previous.onRelease = function() {
	if(current > 0) {
		current--;
		holder.loadMovie(urls[current]);
		caption.text = captions[current];
	}
}

next.onRelease = function() {
	if(current < urls.length-1) {
		current++;
		holder.loadMovie(urls[current]);
		caption.text = captions[current];
	}
}
```

Permalänk: https://www.webforum.nu/p/1941955

## #4 — silfver, 2007-03-13T10:11Z

Några förslag?

Permalänk: https://www.webforum.nu/p/1944866

## #5 — Blixtsystems, 2007-03-13T15:33Z

Kanske detta funkar:

```
var x:XML = new XML();
x.ignoreWhite = true;

var urls:Array = new Array();
var captions:Array = new Array();
var current:Number;
var imgNum:Number;

x.onLoad = function() {
	var images:Array = this.firstChild.childNodes;

	for(i=0;i<images.length;i++) {
		urls.push(images[i].attributes.url);
		captions.push(images[i].attributes.caption);
	}
 	loadImg(0);
	caption.text = captions[0];
	current = 0;
	imgNum=0;
}

x.load("images.xml");
function loadImg(num:Number){
var my_mcl:MovieClipLoader=new MovieClipLoader();
var myListener:Object = new Object();
myListener.owner=this;
myListener.num=num;
myListener.onLoadInit = function (target_mc:MovieClip) {
	var imgW:Number=800;
	var imgH:Number=600;
	if (w>imgW) {
		xPc = (w*100)/imgW;
	}
	if (h>imgH) {
		yPc = (h*100)/imgH;
	}
	if (xPc>yPc) {
		target_mc._width /= (xPc/100);
		target_mc._height /= (xPc/100);
	} else {
		target_mc._width /= (yPc/100);
		target_mc._height /= (yPc/100);
	}
	this.owner.caption.text = this.owner.captions[this.num];
	this.owner.loadImg(this.owner.currImg);
};
my_mcl.addListener(myListener);
my_mcl.loadClip(urls[num], holder);
currImg++;
}
previous.onRelease = function() {
	if(current > 0) {
		current--;
		holder.loadMovie(urls[current]);
		caption.text = captions[current];
	}
}

next.onRelease = function() {
	if(current < urls.length-1) {
		current++;
		holder.loadMovie(urls[current]);
		caption.text = captions[current];
	}
}
```

Permalänk: https://www.webforum.nu/p/1944959

## #6 — silfver, 2007-03-13T16:14Z

Fungerar inte. :(

Permalänk: https://www.webforum.nu/p/1944973

## #7 — Blixtsystems, 2007-03-13T18:34Z

Inte så konstigt då jag ser att jag kallade variabeln "imgNum" för "currImg" i loadImg funktionen. Prova och byt ut dem och om det inte funkar berätta gärna vad som händer och eventuella felmeddelanden.

Permalänk: https://www.webforum.nu/p/1945015

---

Tråden på webben: https://www.webforum.nu/amne/flash/157811-få-bild-att-anpassa-storlek
