can someone spot a problem???
Monkey Forums/Monkey Beginners/can someone spot a problem???
| ||
| just started and already something ive done before giving me problems arghhh. the mouse over is not functioning right it changes press frame on coords i didnt give it i dont understand. in the mainscreen class under update please help.
strict
Import mojo
Class mouse
Field image:Image
Method New()
image = LoadImage("PNG/UI/cursor.png")
End
Method Draw:Int()
DrawImage(image,MouseX(),MouseY())
Return 0
End
End
Class MainScreen
Field image:Image
Field Sbutton:Image
Field Obutton:Image
Field SbuttX:Int = screenWidth/2
Field SbuttY:Int = screenHeight/2
Field ObuttX:Int = screenWidth/2
Field ObuttY:Int = screenHeight/2
Field Oframe:Int = 1
Field Sframe:Int = 1
Method New()
image = LoadImage("background1.png")
Sbutton = LoadImage("PNG/UI/start.png",380/2,49,2,Image.MidHandle)
Obutton = LoadImage("PNG/UI/options.png",380/2,49,2,Image.MidHandle)
End
Method Update:Int()
If MouseX() <= SbuttX - 95 or MouseX() >= SbuttX + 95 And MouseY() <= SbuttY - 24 Or MouseY() >= SbuttY + 24
Sframe = 0
Else
Sframe = 1
End
Return 0
End
Method Draw:Int()
DrawImage(image,0,0)
SetAlpha .9
DrawImage(Sbutton,SbuttX,SbuttY+ 40,Sframe)
DrawImage(Obutton,ObuttX,ObuttY+100,Oframe)
Return 0
End
End
Const screenWidth:Int = 640
Const screenHeight:Int = 480
Class spacegame Extends App
Field mainScreen:Int = 1
Field options:Int = 2
Field selectScreen:Int = 3
Field gameOn:Int = 4
Field gameOver:Int = 5
Field gameState:int
'CLASSES
Field splash:MainScreen
Field pointer:mouse
Method OnCreate:Int()
SetUpdateRate(60)
'HideMouse()
gameState = mainScreen
splash = New MainScreen
pointer = New mouse
Return 0
End
Method OnUpdate:Int()
Select gameState
Case mainScreen
splash.Update()
Case options
Case selectScreen
Case gameOn
Case gameOver
End
Return 0
End
Method OnRender:Int()
Cls(0,0,0)
Select gameState
Case mainScreen
splash.Draw()
pointer.Draw()
Case options
Case selectScreen
Case gameOn
Case gameOver
End
Return 0
End
End
Function Main:Int()
New spacegame()
Return 0
End
|
| ||
| If MouseX() <= SbuttX - 95 or MouseX() >= SbuttX + 95 And MouseY() <= SbuttY - 24 Or MouseY() >= SbuttY + 24 I think your logic is wrong (And should be Or) , Any one of those four equations being true means the mouse is outside the central button area. Also, And has higher priority than Or, so you would get weird results even if the equations were what you intended. Use brackets always, unless operator priority is second nature to you. |
| ||
it should be like this:If (MouseX() <= SbuttX - 95 or MouseX() >= SbuttX + 95) And (MouseY() <= SbuttY - 24 Or MouseY() >= SbuttY + 24) this tests to see if the mouse is outside the sbutt area. it can also be with an Or as Garry said: If MouseX() <= SbuttX - 95 or MouseX() >= SbuttX + 95 Or MouseY() <= SbuttY - 24 Or MouseY() >= SbuttY + 24 if anyone of those test are true the mouse is outside Sbutt area. |
| ||
| thanks guys seems right but still not working... |
| ||
| My mistake, didn't think it trough thoroughly. you also need to take into consideration your offset of 40 to where you are drawing the button. Here: I recommend you create a button class. will make it easier to manage. |
| ||
| . |
| ||
| Ahhh was thinking that thought there was some offset issue but wasn't sure, should've tried. But figured just needed the x location and image dimensions and the offset was already included in the calculations... Will try later and post back thx |
| ||
| perfect added the offset to both y's works great another lesson learned thanks gents!!! |