On 14.06.2008, at 19:03, Ross Boylan wrote:
On Sat, 2008-06-14 at 13:43 +0200, Bert Freudenberg wrote: ....
The path methods are a beautifully simple and useful, but they are also a particularly bad example of Morphic programming.
Does this mean that they could be done properly in Morphic? In other words, is the problem here with Morphic, or with this particular approach?
Or maybe it's just very difficult to do properly in Morphic?
It's more complicated - e.g., both definePath and followPath are single methods now, done properly it would require at least a few methods - setup, event handlers, stepping, cleanup ... the control flow would be sprinkled across a few methods. This is typical of almost any event-based UI, you typically would have a mouse-down handler that sets up a few things, a mouse-move handler to collect the path, and a mouse-up handler to gather the result. And these handlers have to be enabled only while the path is recorded.
I also have a more general question: if I'm not doing fancy animations or 3D effects, are there any particular benefits or drawbacks of using Tweak?
Tweak has nothing to do with 3D, it is purely 2D. But for example, the definePath or followPath methods could be implemented in a single method with local control flow which is really nice to program.
- Bert -
I was intrigued by some statements that Tweak has a clearer separation of model and the graphical/interactive part (View/ Controller in MVC). I definitely have separate model classes, and have found Morphic a bit awkward for that reason. It does have pluggable Morphs, though.
Ross
You may notice how the entire World stops while you define a path (have a clock morph running to see this). Also it uses Sensor directly, and calls displayWorld. Both big no-nos in proper Morphic programs. The followPath method even does the actual animation in a background thread. Really Bad Things can happen if you do that.
Tweak did set out to allow this kind of programming (because it is so convenient), and it succeeded in that.
For the original question - if you want the actual cover flow effect you need a 3D renderer. You could use Croquet and OpenGL for that, but it might be overkill. The Balloon3D render should be enough for this simple type of animating.
If you can live with a pseudo-3D effect (like the carousel seen on the amazon.com frontpage) you can use simple 2D morphic animation of course. In that effect, the covers always remain parallel to the screen but only move position in a 3D circle so that they become smaller in the back and larger in the front, and of course are sorted back-to-front ...
In fact, that is so simple I couldn't resist to make an etoy version, 4 lines of code :)
Uploaded as
http://wiki.squeak.org/squeak/uploads/Carousel.pr
- Bert -