Posted: 23rd Aug 2011 3:15
I am currently makeing a slider bar for controlling the environment .I am having trouble finding the new position the slider needs too be at with getpointerx positions and getpointery position.

+ Code Snippet
void testifslidebuttonhit()
{
	int x=agk::GetPointerX();
	int y=agk::GetPointerY();
	int xcnt=0;
	while (xcnt<slidebarcount)
	{
		if(x>=xpostemp[xcnt]&&x<=xpostemp[xcnt]+10&&y>=ypostemp[xcnt]-7&&y<=ypostemp[xcnt]+7)
		{
			sliderpicked=xcnt;
			xcnt=slidebarcount;
		}
		xcnt++;
	}
	lastxpos=x;
	lastypos=y;
}
void SLIDEBAR::positionslider(int xpos)
{
	agk::SetSpritePosition(slidebarpos[sliderpicked],xpostemp[sliderpicked]+xpos,ypostemp[sliderpicked]-7);
}
void SLIDEBAR::makesliderbar(int xpos,int ypos,int lengthofslidebar,int controler,int red,int green, int blue)
{
	
	sizeslider[slidebarcount]=lengthofslidebar;


	slidebar[slidebarcount]=agk::CreateSprite(agk::LoadImage("slider.png"));
	agk::SetSpritePosition(slidebar[slidebarcount],xpos,ypos);
	agk::SetSpriteColor ( slidebar[slidebarcount], red, green, blue,255);
	
	agk::SetSpriteSize(slidebar[slidebarcount],lengthofslidebar,5);
	slidebarpos[slidebarcount]=agk::CreateSprite(agk::LoadImage("slideutility.png"));
	agk::SetSpritePosition(slidebarpos[slidebarcount],xpos+controler,ypos-7);
	xpostemp[slidebarcount]=xpos;
	ypostemp[slidebarcount]=ypos;
	if(controler>=lengthofslidebar)
	{
		controler=lengthofslidebar;
		xpostemp[slidebarcount]=controller+xpos;
	
	}
	else if(controler<=0)
	{
		xpostemp[slidebarcount]=0+xpos;
		controler=0;
	}

	slidebarcount++;

}
Posted: 24th Aug 2011 2:46
I think i have the slide bar working know but it jiggles at the ends. If some one can help so it don't jiggle like that then it be better.
+ Code Snippet
#include "Main.h"
#include "MYAGKGUI.h"

// let the compiler know we're using the AGK namespace
using namespace AGK;
class SLIDEBAR
{
public:
	SLIDEBAR()
	{
		slidebarcount=0;
		sliderpicked=-1;
	}
	void makesliderbar(int xpos, int ypos,int lengthofslidebar,int controllerdefaultlocation,int red,int green, int blue);
	void positionslider();
	bool testifslidebuttonhit(bool down);

	void destroyslidebar();
private:
	int slidebarcount;
	int slidebarpos[50];
	int slidebar[50];
	int xpostemp[50];
	int ypostemp[50];
	int sizeslider[50];
	int sliderpicked;
	int lastxpos;
	int lastypos;
};
bool SLIDEBAR::testifslidebuttonhit(bool down)
{

	if (!down)
	 return false;


	int x=agk::GetPointerX();
	int y=agk::GetPointerY();
	int xcnt=0;
	while (xcnt<slidebarcount)
	{
		if(x>=slidebar[xcnt]+xpostemp[xcnt]&&x<=slidebar[xcnt]+xpostemp[xcnt]+10&&y>=ypostemp[xcnt]-7&&y<=ypostemp[xcnt]+7)
		{
		
			sliderpicked=xcnt;
			xcnt=slidebarcount;
			return true;
		}
		xcnt++;
	}
	lastxpos=x;
	lastypos=y;
	return false;
}
void SLIDEBAR::positionslider()
{

	
		
		int x=agk::GetPointerX();

		
		if(slidebar[sliderpicked]<-5)
		{
			x=xpostemp[sliderpicked];
			slidebar[sliderpicked]=0;
		}
		else if(slidebar[sliderpicked]>=sizeslider[sliderpicked]-5)
		{
			x=sizeslider[sliderpicked]+xpostemp[sliderpicked]-5;
			slidebar[sliderpicked]=sizeslider[sliderpicked]-5;
		}

		agk::SetSpritePosition(slidebarpos[sliderpicked],x,ypostemp[sliderpicked]-7);
		slidebar[sliderpicked]=x-xpostemp[sliderpicked]-5;
	
	
}
void SLIDEBAR::makesliderbar(int xpos,int ypos,int lengthofslidebar,int controler,int red,int green, int blue)
{
	
	sizeslider[slidebarcount]=lengthofslidebar;


	slidebar[slidebarcount]=agk::CreateSprite(agk::LoadImage("slider.png"));
	agk::SetSpritePosition(slidebar[slidebarcount],xpos,ypos);
	agk::SetSpriteColor ( slidebar[slidebarcount], red, green, blue,255);
	
	agk::SetSpriteSize(slidebar[slidebarcount],lengthofslidebar,5);
	slidebarpos[slidebarcount]=agk::CreateSprite(agk::LoadImage("slideutility.png"));
	agk::SetSpritePosition(slidebarpos[slidebarcount],xpos+controler,ypos-7);
	xpostemp[slidebarcount]=xpos;
	ypostemp[slidebarcount]=ypos;
	if(controler>=lengthofslidebar)
	{
		controler=lengthofslidebar;
		slidebar[slidebarcount]=controler;
	
	}
	else if(controler<=0)
	{
		slidebar[slidebarcount]=0;
		controler=0;
	}
	else
	slidebar[slidebarcount]=controler;

	slidebarcount++;

}
void SLIDEBAR::destroyslidebar()
{
	for(int x=0; x<=slidebarcount;x++)
	{
		agk::DeleteSprite(slidebar[x]);
		agk::DeleteSprite(slidebarpos[x]);
	}
}