Okay, I managed to fix this today. Here's what happened.
When I implemented my new preloader, I attempted to use the three-frame method detailed here. By the way, that's a great general tutorial on preloaders, if you're looking for one.
However, I tried to use the four-frame method later on in the tutorial, but I missed a crucial fact: Flash can't access assets until it reaches the frame that they're on. So, frame 1 had only my preloader (and the very small DocumentClass), frame 2 was my class frame, frame 3 had the Main object and its associated code, and frame 4 had my AssetHolder object with all of my library objects.
The result was that when I ran gotoAndStop(3);
, the Main class and object were available, which called the DesktopScreen class and object. But only the DesktopScreen class was available (as it was in frame 2) and the object wasn't (it wouldn't be available until frame 4). The result was that the code was run, but since nothing was actually on the stage (even though Flash was telling me it was) it threw a bunch of errors.
I finally figured this out when I reviewed the extremely informative tutorial by Michael James Williams here. That's another good tutorial to review if you're looking to get started with Flash!
So, this was easy enough to fix; stop using (the unnecessary) frame 4 for my assets, and move them instead to frame 2. Frame 1 still has stop();
in the actions panel, so the game stops as soon as it starts to load, looks to DocumentClass, starts preloading, then goes to frame 3 (after all of the assets and classes are available) once loaded.
I hope this helps anyone who has a similar, incredibly obscure, problem. If you have any questions, feel free to ask!