On Wed, Oct 22, 2008 at 12:47 PM, Rajeev J Sebastian
<[EMAIL PROTECTED]> wrote:
> On Wed, Oct 22, 2008 at 9:05 AM, Iván N Paz <[EMAIL PROTECTED]> wrote:
>> Hi guys,
>>
>> Im extending Fx.Morph onto another class that will basicly have the same
>> functionality plus other stuff it doesnt do right now (i.e. bezier pathing)
>>
>> Maybe I've gotten wrong the whole implement/extend deal, and have surfed a
>> lot thru all the threads in here that treat such subject, and Aaorons book
>> as well....
>>
>> Well... to the point... this is what I have:
>>
>>
>> Fx.MorphPath = new Class({
>>
>> Extends: Fx.Morph,
>>
>> compute: function(from, to, delta){
>> var now = {};
>> //check if we have a motion path
>> var mp = (this.options.motionpath ? this.options.motionpath : false);
>> for (var p in from)
>> {
>> //motionpath is only applied to top/left css properties
>> if(mp) {
>> var coords = mp.getCoordinates(1-delta);
>> var x = coords.x + 'px';
>> var y = coords.y + 'px';
>> }
>> //Go rewriting as usual, but take motionpath in consideration
>> now...
>> if(p == 'left' && mp){
>> //calculate X movement (left)
>> now[p] = x;
>> }else if(p == 'top' && mp){
>> //calculate Y movement (top)
>> now[p] = y;
>> }else{
>> //standard mootool calculation
>> now[p] = this.parent(from[p], to[p], delta);
>> }
>> }
>> return now;
>> }
>>
>> });
>>
>> So, where's the problem... the problem lies, in that I can do the bezier
>> pathing morphin thingy without problem BUT if I try to also morph another
>> property such as width, opacity, whatever, it breaks....
>>
>> I suspect the problem is here:
>>
>> //standard mootool calculation
>> now[p] = this.parent(from[p], to[p], delta);
>
> Main Problem is, you have to call the Fx.CSS's compute, and not Fx.Morph.
>
> What I would suggest, is
> a) to "fork" Fx.Morph into your own Fx.MorphPath.
> b) pass this.parent(from, to, delta) instead.
Btw, those are alternatives ... you might want to start with (b) first.
Regards
Rajeev J Sebastian