Created: 2008-09-21 22:49
Updated: 2016-11-16 07:15


The core principal to the Scratch on Flash design was to mirror the Squeak design as much as possible. In general, there are a lot of similarities, especially in the core objects like the Blocks, the ScratchProcess, and the ScriptableScratch subclasses.

But a few things were changed along the way. A summary of the kinds of changes:

  • When deserializing the scratch project object file, non-executable UI elements (and things like floating blocks) are thrown away. This is just a player, so it does not need edit-only information
  • Blocks and the like are not graphical, so they end with 'Block' and not 'Morph'
  • The graphical element of a Sprite is in SFSprite (ScratchFlashSprite) and not in the 'Morph'. 'Morph' within the Flash program means 'Graphically-aware, Scriptable, Scratch Object'. So 'Morph's are controllers of graphics but are not within the Flash display hierarchy itself.
  • I stripped the 'Scratch' prefix off some classes. Flash has package-based namespace capabilities, so the extra Scratch just made a class name longer. For example, 'ScratchSpriteMorph' becomes just 'SpriteMorph'.
  • I tend to avoid having classes that also function as libraries (pure static capabilities), so a couple classes had their static functionality split out into a 'Lib' class
  • Creating Smalltalk equivalent classes was avoided although I needed some image-processing classes (StForm) to deal with conversion beyond what ObjStream itself does
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more