I don't know how else to describe it, so I'll try to make myself clear through a series of code snips.

Exhibit A: My object of a TImageSprite (From Andorra 2D)
[pascal]
TCloud = class(TImageSprite)
private
protected
procedure DoCollision(Sprite:TSprite; var Done:boolean);override;
procedure DoMove(timegap:double);override;
public
xspeed,yspeed: integer;
end;
[/pascal]
Notice my xspeed and yspeed integers. The problem is, I don't know how to access them.
If I do the below, my variables are not accessible..
[pascal]
Sprite: TImageSprite;
Sprite := TCloud.Create(engine);
with Sprite do
begin
Image := imgs.Items[1];
x := 0;
y := 0;
z := 1;
//xspeed := 0; // Nope. Doesn't exist.
CollisionTester := ColTest;
end;
[/pascal]
I have a very sneaking suspicion this is because I can only have the properties, etc, of a TImageSprite, but still, since I created it as my own object with new variables, I had hoped I'd be able to access them.

- Sighs -
In somewhat related news, I gave up on SDL after I discovered through massive trial and error that I could not load a PNG with alpha, then change that alpha later on to change the opacity.. so I went back to my other friend, Andorra.