From Test-Scratch-Wiki
< Eng:Scratch File Format (1.4)(Redirected from Eng:Scratch File Format/User-class Objects)
- This is part of a technical description of the file format.
User-class objects are Objects which can change their attributes between Scratch versions — such as Stage and Sprite. For example, the attribute for "lists" was only added in a later version.
Structure
classID
: one byte describing the type of object.version
: the version of the object, used to determine the value and type of the fields.length
: how many fields the object has (as this may change between versions).fields
: length number of fields (Inline Values and Object References).
Technical details
In Scratch's Squeak source code, each User-class Object implements the instance methods storeFieldsOn:
, initFromFieldsFrom:version:
, and fieldsVersion
(found under the object i/o
category). Inspecting these methods shows what fields on these objects are serialised.
(When the serialization format of an object is changed, the methods storeFieldsOn:
and initFromFieldsFrom:version:
are changed, and the version number returned by objStreamVersion is increased by one.)
Each User-class object can have a maximum of 255 fields.
List of User-class Objects
Some of the classes inherit from others. All Morphs inherit the properties of a Morph, for example. Inherited/superclass fields are serialised to the file before subclass fields.
100 Morph
bounds
,owner
,submorphs
,color
,flags
,properties
Base class for most UserObjects.
101 BorderedMorph
inherits [[Eng:#100_Morph|Morph]]
borderWidth
,borderColor
102 RectangleMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
103 EllipseMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
104 AlignmentMorph
inherits [[Eng:#102_RectangleMorph|RectangleMorph]]
orientation
,centering
,hResizing
,vResizing
,inset
105 StringMorph
inherits [[Eng:#100_Morph|Morph]]
font with size
,emphasis
,contents
106 UpdatingStringMorph
inherits [[Eng:#105_StringMorph|StringMorph]]
107 SimpleSliderMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
slider
,value
,setValueSelector
,sliderShadow
,sliderColor
,descending
,model
,target
,actionSelector
,arguments
,actWhen
108 SimpleButtonMorph
inherits [[Eng:#102_RectangleMorph|RectangleMorph]]
target
,actionSelector
,arguments
,actWhen
109 SampledSound
envelopes
,scaledVol
,initialCount
,samples
,originalSamplingRate
,samplesSize
,scaledIncrement
,scaledInitialIndex
110 ImageMorph
inherits [[Eng:#100_Morph|Morph]]
form
,transparency
111 SketchMorph
inherits [[Eng:#100_Morph|Morph]]
originalForm
,rotationCenter
,rotationDegrees
,rotationStyle
,scalePoint
,offsetWhenRotated
Scratch-specific classes
ScriptableScratchMorph
inherits [[Eng:#100_Morph|Morph]]
objName
,vars
,blocksBin
,isClone
,media
,costume
Contains methods for scripting.
123 SensorBoardMorph
inherits [[Eng:#100_Morph|Morph]]
unknown
Has a single extra field — I have no idea what it does. Maybe somebody with a sensor board could check this?
124 ScratchSpriteMorph
inherits [[Eng:#ScriptableScratchMorph|ScriptableScratchMorph]]
visibility
,scalePoint
,rotationDegrees
,rotationStyle
,volume
,tempoBPM
,draggable
,sceneStates
,lists
A Sprite object.
125 ScratchStageMorph
inherits [[Eng:#ScriptableScratchMorph|ScriptableScratchMorph]]
zoom
,hPan
,vPan
,obsoleteSavedState
,sprites
,volume
,tempoBPM
,sceneStates
,lists
The project Stage. Sprites are stored as an attribute. The stage is the root object of the Object Table in Sprite files and project file contents.
140 ChoiceArgMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
141 ColorArgMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
142 ExpressionArgMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
145 SpriteArgMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
147 BlockMorph
inherits [[Eng:#100_Morph|Morph]]
isSpecialForm
,oldColor
Unused.
148 CommandBlockMorph
inherits [[Eng:#147_BlockMorph|BlockMorph]]
commandSpec
,argMorphs
,titleMorph
,receiver
,selector
,isReporter
,isTimed
,wantsName
,wantsPossession
Unused.
149 CBlockMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
151 HatBlockMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
153 ScratchScriptsMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
Unused.
154 ScratchSliderMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
155 WatcherMorph
inherits [[Eng:#104_AlignmentMorph|AlignmentMorph]]
titleMorph
,readout
,readoutFrame
,scratchSlider
,watcher
,isSpriteSpecific
,unused
,sliderMin
,sliderMax
,isLarge
A variable watcher.
157 SetterBlockMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
158 EventHatMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
160 VariableBlockMorph
inherits [[Eng:#148_CommandBlockMorph|CommandBlockMorph]]
isBoolean
Unused.
ScratchMedia
mediaName
162 ImageMedia
inherits [[Eng:#ScratchMedia|ScratchMedia]]
form
,rotationCenter
,textBox
,jpegBytes
,compositeForm
163 MovieMedia
inherits [[Eng:#ScratchMedia|ScratchMedia]]
fileName
,fade
,fadeColor
,zoom
,hPan
,vPan
,msecsPerFrame
,currentFrame
,moviePlaying
Unused.
164 SoundMedia
inherits [[Eng:#ScratchMedia|ScratchMedia]]
originalSound
,volume
,balance
,compressedSampleRate
,compressedBitsPerSample
,compressedData
165 KeyEventHatMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
166 BooleanArgMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
167 EventTitleMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
168 MouseClickEventHatMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
169 ExpressionArgMorphWithMenu
inherits [[Eng:#100_Morph|Morph]]
Unused.
170 ReporterBlockMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
171 MultilineStringMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
172 ToggleButton
inherits [[Eng:#108_SimpleButtonMorph|SimpleButtonMorph]]
Unused.
173 WatcherReadoutFrameMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
Unused.
174 WatcherSliderMorph
inherits [[Eng:#107_SimpleSliderMorph|SimpleSliderMorph]]
Unused.
175 ScratchListMorph
inherits [[Eng:#101_BorderedMorph|BorderedMorph]]
listName
,cellMorphs
,target
A List object. List items are found in the cellMorphs
attribute.
176 ScrollingStringMorph
inherits [[Eng:#100_Morph|Morph]]
Unused.
Files | |
Structure |
Object Table • Inline Values • Objects • Fixed-format Objects • User-class Objects |
Contents |