I said earlier a camera object is going to be very difficult to set up as it takes a completely different approach to how everything is done. It requires set up a couple classes to represent a Camera and allow updating and sorting the display with it.
And I completely understand why there isn't an quaternion based camera tutorials out there. There are barely any camera tutorials for flash as is, the built in 3D aspect of flash is extremely young, and Quaternions tend to scare the shit out of people because it's 3 complex values and a real value...
complex number == a + bi | where i is the sqrt(-1)
but that's uber tangential to the issue at hand with what it is you're attempting to accomplish.
Now back at where I was before... now I suggested the pivot point thing because I assumed it worked a specific way. Alas it must not be doing what I expect.
But I showed you some example of code the long way of doing it as well. But moving the object around the origin, rotating and then moving it back over the point of interest (its location).
var vec:Vector3D = new Vector3D( room.x, room.y, room.z );
room.transform.matrix3D.appendTranslation( -vec.x, -vec.y, -vec.z );
room.transform.matrix3D.appendRotation( 10, Vector3D.Y_AXIS );
room.transform.matrix3D.appendTranslation( vec.x, vec.y, vec.z );
it should work
oh, and you might be getting some weird visual issues when you're close to walls due to a lack of a z-buffer in flash. It does NOT resolve the the layering of objects based on there z position relative to the camera. You have to solve this yourself and resort the child objects to create the correct overlapping effect.