Hi Phil,

the getTrait and setTrait methods are used by shapes, not morphs. All instance variables of morphs are persistent a priori. I modified your test code a bit:

Morph.subclass("MyPersistedMorph", {
        
        handlesMouseDown : Functions.True,
        
        initialize : function($super) {
                
                console.log('PersistedMorph.initialize');
                $super(new lively.scene.Rectangle(new Rectangle(100, 100, 200, 
200)));
                
                this.setFill(Color.green);
console.log('PersistedMorph.initialize weight: ' + this.weight); // will always be undefined because
                                                                        // 
initialize isn't called for deserialization
        },
        
        onDeserialize: function() {
console.log('PersistedMorph.onDeserialize weight: ' + this.weight); // This works
        },
        onMouseDown : function($super, event) {
                
                console.log('PersistedMorph.onMouseDown');
                console.log('PersistedMorph.onMouseDown weight: ' + 
this.weight);
                this.weight = 100;
                
                return true;
        }
});


Robert


On Mar 3, 2009, at 11:18 PM, Philip Weaver wrote:

I struggled with a very simple yet important subject and I just want to post a possible solution here. I wanted to persist some simple values when one of my morph instances was persisted. I am not using the Widgets class at this time. My goal is persist some layout constraints on a morph.

The Morph class does extend from lively.data.Wrapper. lively.data.Wrapper provides methods for setTrait and getTrait which do store and restore automatically when a Morph is serialized and deserialized.

Another approach may be to use models. Because I'm not really yet using the Widgets class I don't really have models working yet. There appears to be no documentation yet for using models except for Examples.js.
_______________________________________________
General mailing list
[email protected]
http://livelykernel.sunlabs.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://livelykernel.sunlabs.com/mailman/listinfo/general

Reply via email to