2012-03-30 1 views
0

Это может быть слишком специфично, но, возможно, у кого-то есть опыт расширения класса частиц toxiclib.js?Toxiclibs.js, расширяющий класс частиц

я получаю:

TypeError: this.setWeight is not a function 

Я делаю очень простую вещь (я использую Processing.js):

class Particle extends VerletParticle2D { 

    Particle(float x, float y) { 
     super(x,y); 
    } 

    void display() { 
     stroke(0); 
     ellipse(x,y,16,16); 
    } 
    } 

ответ

1

Наследование между Processing.js и другими библиотеками не все понял еще нет. Существует обходное решение.

Первым делом нужно обратиться к VerletParticle2D его полным пространством имен:

class Particle extends toxi.physics2d.VerletParticle2D 

Вторая часть, чтобы добавить это конструктор toxiclibs.js' для VerletParticle2D (на момент написания этого, то есть строка # 9941 постройки/toxiclibs.js):

if(!(this instanceof VerletParticle2D)){ 
     return new VerletParticle2D(x,y,w); 
    } 

Третья часть, чтобы добавить эти 2 строки в любом месте после того, как вы определили свой класс. К сожалению, эти 2 строки не будет играть хорошо с процессингового IDE:

Particle.prototype = new toxi.physics2d.VerletParticle2D(); 
Particle.prototype.constructor = Particle; 

Вы можете применить эти 3 модели для любого другого класса, а также расширить их. Кроме того, Processing 2.0 Alpha 5 выпустила новую функцию, которая потянет файл .js рядом с сопровождающим .jar. Поэтому, если вы поместите toxiclibs.js рядом с toxiclibscore.jar и переименуйте его, он будет экспортироваться с вашим эскизом. Это упростит использование одной версии для некоторых расширений классов.

Я загрузил веб-экспортироваться эскиз, с измененным toxiclibscore.js файл здесь: http://haptic-data.com/toxiclibsjs/misc/ToxiclibsjsExtend.zip

удачи!

+0

wow спасибо! – Stpn

+0

Привет, я пробовал этот подход, и он работает для расширения других классов. Интересно, однако, если вы можете рекомендовать лучший способ добавления расширенных классов в физику? Это выглядит как физика.addParticle (extendedParticle); на самом деле не будет работать. Или я могу делать что-то неправильно. – Stpn