I have a child class to handle images dragged onto the screen. It stores the name, and x, y position of each image in variables. Then it has a methods to scale them and do other operations.
I would like to have 2 of these classes, but the image name and x, y position would be different.
I first tried to create a class that has this class as a child class. In this parent class, I tried creating the same variables, hoping it would use these, instead of the ones created in the child class.
The child class still used the variables created within it, instead of in the parent.
Is there a way to do this, or am I climbing up the wrong tree?
public class cShapeParent extends cShapes {
// would like the base class to use this data
String[] mNames=
{
"ball_green.png",
"ball_green.png",
"ball_green.png"
};
cShapeParent(Context context,int screenWidth, int screenHeight)
{
super(context, screenWidth, screenHeight);
}
}
Child class
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
public class cShapes {
public
String[] mNames=
{
"ball_green.png",
"ball_red.png",
"ball_blue.png"
};
int[] mX={200,300,400};
int[] mY={200,200,200};
int[] mW={0,0,0};
int[] mH={0,0,0};
int Amount=3;
int MyScreenWidth=512;
int[] BitMapId={
R.drawable.ball_green, R.drawable.ball_red,
R.drawable.ball_blue, R.drawable.ball_green
};
Bitmap MyImages[];
Rect[] mBitmapSize;
cShapes(Context context,int screenWidth, int screenHeight)
{
// Load in bitmaps
MyImages=new Bitmap[4];
AssetManager assetManager= context.getAssets();
InputStream inputStream;
mBitmapSize = new Rect[Amount];
try {
// set scaling ratio
float r=(float)MyScreenWidth / (float)screenWidth;
for(int i=0;i<Amount;i++)
{
inputStream=assetManager.open( mNames[i]);
MyImages[i]=BitmapFactory.decodeStream(inputStream);
int w=(int)( (float)MyImages[i].getWidth()*r);
int h=(int)( (float)MyImages[i].getWidth()*r);
mBitmapSize[i]=new Rect(0,0,w,h);
mW[i]=w; mH[i]=h;
mX[i]=(int) ( (float)mX[i]*r);
mY[i]=(int) ( (float)mY[i]*r);
inputStream.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
boolean Intersect(int id, int x,int y)
{
if ( x >= mX[id] && x <= mX[id]+128 && y >= mY[id] && y <= mY[id]+128 )
return true;
return false;
}
} // end class
If i understand your question correctly, you want to access the variables defined in your super class from your sub class. If thats your question then yes, its possible using super keyword.
Note that, you can access
idirectly even without the super keyword, i just included it to make it more expressive. However, you can only accessiin this example when its not declared asprivate.