2013-02-15 68 views
2

對於KineticJS版本4.0.0或更小的形狀擴展一個類,並可以通過如何延長KineticJS塑造

var MyCircle = Kinetic.Circle.extend({ 
    init : function(config) { 
     this._super(config)); 
    }, 
    myFunc : function(){} 
}); 

或者

Kinetic.MyCircle = function (config) { 
    Kinetic.Circle.apply(this, [config]); 
}; 
Kinetic.MyCircle .prototype = { 
    myFunc: function() {} 
}; 
Kinetic.GlobalObject.extend(Kinetic.MyCircle , Kinetic.Circle); 

擴展在版本4.0.1 他們刪除了對類實用程序的依賴關係,並實現了應該快得多的自定義解決方案。

如何用新解決方案擴展形狀?

回答

3

Kinetic.GlobalObject成爲Kinetic.Global(> 4.0.1),然後
Kinetic.Global現在Kinetic.Util(2013版),這裏是一個解決方案:

(function() { 
    Kinetic.MyCircle = function(config) { 
     this._initMyCircle(config); 
    }; 

    Kinetic.MyCircle.prototype = { 
     _initMyCircle: function(config) { 
      Kinetic.Circle.call(this, config); 
      }, 
     myFunc : function(){ 
     } 
    }; 

    Kinetic.Util.extend(Kinetic.MyCircle, Kinetic.Circle); 
})(); 
+0

我認爲這Kinetic.Util.extend(Kinetic.MyCircle,Kinetic.Circle);現在(例如見http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.5.4.js的圓圈對象) – 2013-06-19 19:58:08

+0

你是對的,謝謝你提醒我編輯這篇文章。 – Skarbo 2013-06-20 05:49:54

+0

是否有一個標準的命名約定來代替_initMyCircle?看起來多餘,因爲它顯然是MyCircle初始化器,但是調用_init會導致錯誤 – Annan 2013-10-25 18:58:49