Funny things with type conversion

ok, this is somewhat related to a recent thread about the import statement. In it was discussed the fact that import happens at run time not compile time.
Well, i’ve run into an interesting situation and just want some light shed on it.

I’ve got a custom Sprite class that i use instead of the native Sprite class:
Spraphic

I’ve got a SWF that gets loaded in at runtime that is a “Spraphic”.

now, I, for example, take from this Spraphic the text value of a text field it has:
[AS]
private function loadSpr(e:Event):void {
TextField(Spraphic(e.target.content).getChildAt(0)).text;

}
[/AS]

notice my use of: Spraphic(e.target.content)

First question - Why does this work?
Using that i can cast the content as a Spraphic.

Second Question -
This works when i have imported in the Sprahpic class with an import statement.
But, if i place the Spraphic class in a SWC and use that instead of directly importing it, i get a runtime type conversion error. - Why?

Note also that the main class extends Spraphic, that works fine either way.

It’s clear from this example that import is being used at runtime, but why do i have to directly import a class to be able to type cast with it?