Dependencies Question
Stephane Ducasse
ducasse at iam.unibe.ch
Mon Jul 29 20:27:17 UTC 2002
Hi
I'm building a breakOut for my book and I have the following problem.
I have one object that contains the score of the game that get increased
each time a brick is destroyed.
Now I copied a bit the code of the SameGame to get a list of button around
my game field and in particular I want to display the score. So here is my
question.
In VisualWorks I would changed the Field score instance variable into a
value holder and I will initialize the BreakOut class to get notify
whether the score variable changes.
How can I do the same in Squeak?
I started to
Field>>score: aNumber
score := aNumber.
self changed
BreakOut>>initializeToStandAlone
...
self field addDependent: self
BreakOut>>udpate
Transcript show: 'Breakout update' ; cr
But I got nothing.
I checked a bit and I was surprised to see that dependents are still
managed in Squeak via the DependentFields. I read in old VW tutorials and
books that this way of doing things was bad because all the dependents
were stored in the same dict. I checked and Model is there :)
But Morph does not implement a different ways of storing dependents.
Then I checked
Morph>>changed
"Report that the area occupied by this morph should be redrawn."
^fullBounds
ifNil:[self invalidRect: self outerBounds]
ifNotNil:[self invalidRect: fullBounds]
And realized that Morph was simply breaking the dependency
protocol.....(no comment)
So here is my question:
- how do we get notification and registration in Squeak for a morph?
Stef
PS: The dependencies mechanism start to be old and broadcasting too much.
Is there somebody thinking about a new architecture? Events or
DependencyTransformer like in VW ....
Dr. Stéphane DUCASSE (ducasse at iam.unibe.ch)
http://www.iam.unibe.ch/~ducasse/
"if you knew today was your last day on earth, what would you do
different? ... especially if, by doing something different, today
might not be your last day on earth" Calvin&Hobbes
More information about the Squeak-dev
mailing list
|