mem/speed use Height() or save/use height once.
Monkey Forums/Monkey Beginners/mem/speed use Height() or save/use height once.| 
 | ||
| From the doc. Method Height : Int () Returns the height of the image, in pixels. But does this method calculate the img.Height() every time you use it ? Or is it just giving a 'static' value back, what is only calculate once (the image is loaded) ? I ask this because i'm probably going to use many image's with calculations. So I can choose to program like this: Class Sprite Field img:Image End OnUpdate() _mx = _mx - img.Height() / 2 and many other multiple img.Height() & Width() stuff Or store the Height() and Width() once and use that 
Class Sprite
	Field img:Image
        Field height:Float = img.Height() ' using a init method
        Field halfHeight:Float = img.Height() / 2' using a init method
End
OnUpdate()
_mx = _mx - img.halfHeight
and many other multiple img.height & img.width stuff
The halfHeight will be faster a little faster, but the height:Float is the question. | 
| 
 | ||
| It returns only the field height from Class Image. So no extra calculation. | 
| 
 | ||
| You can check the MonkeyX code to make sure, but on my quick look when an Image is loaded the image data, width, height and depth are stored and not recalculated. Within Diddy we do something like this to save on typing and an extra method call: 
Local gi:GameImage = New GameImage
gi.Load("player.png")
Local s:Sprite = New Sprite(gi, 100, 100)
s.x += s.image.h4
Class Sprite
	Field image:GameImage
	Field x:Float, y:Float
	Method New(img:GameImage, x:Float, y:Float)
		Self.image = img
		Self.x = x
		Self.y = y
	End
End
Class GameImage
	Field image:Image
	Field w:Int
	Field h:Int
	Field w2:Float
	Field h2:Float
	Field w4:Float
	Field h4:Float
	Method Load:Void(file:String, flags:Int, midhandle:Bool = True)
		Self.midhandle = midhandle
		image = LoadBitmap(file, flags)
		CalcSize()
		MidHandle(midhandle)
	End
	Method CalcSize:Void()
		If image <> Null Then
			w = image.Width()
			h = image.Height()
			w2 = w / 2
			h2 = h / 2
			w4 = w / 4
			h4 = h / 4
		End
	End
End
Function LoadBitmap:Image(path$, flags%=0)
	Local pointer:Image = LoadImage(path, 1, flags)
	If pointer = Null Then Error ("Error loading bitmap "+path)
   	Return pointer
End
 |