Главная » Processing » Написание библиотек Processing

0

Теперь, когда вы установили шаблон библиотеки, настало время засучить рукава и занятя кодом Java. Мы напишем небольщую бибилотеку для рисования шестиугольников и звезд. Ничего особенного, просто небольшой пример того, как создаются библиотеки.

Приступим

Если вы до сих пор не установили шаблон библиотеки Processing, сделайте это. Процесс описан в предыдущем примере, Установка шаблона библиотеки Processing в Eclipse.

Как это делается

Откройте папку src вашего проекта в Package Explorer в Eclipse. Удалите все, что там есть. Выделите папку src и откройте меню File | New | Class для создания нового класса Java.  В поле package введите URL вашего сайта в обратном направлении. Это нужно для иорта библиотеки в скетч Processing. В поле Name введите MyLib, имя класса, который мы будем писать. Когда все буедт сделано, вы сможете создать новый файл кликнув по кнопке Finish.

Когда вы откроете файл, вы увидите, что Eclipse уже добавил туда кое-какой код:

package be.vormplus; public class MyLib {

}

Начнем с импорта основной библиотеки Processing в наш класс Java, объявления переменных PApplet и String и написания конструктора для нашего класса. Мы импортировали эту библиотеку потому, что вы будем использовать в нашей библиотеке некоторые функции Processing. Если вы не собираетесь использовать в своей библиотеке функции Processing, вам не нужно импортировать ее. Также мы реализуем интерфейс PConstants, чтобы использовать константы Processing. Код будет таким:

package be.vormplus; import processing.core.*;

public class MyLib implements PConstants { PApplet p;

public final static String VERSION = "##library.prettyVersion##"; public MyLib( PApplet _p )

{

p = _p;

}

}

Наш класс почти написан, осталось только написать методы для рисования шестиугольника и звезды. Наберите следующий код после конструктора:

public void drawHexagon( float radius )

{

p.beginShape();

for ( int i = 0; i < 6; i++ ) {

float x = p.cos( i * THIRD_PI ) * radius; float y = p.sin( i * THIRD_PI ) * radius; p.vertex( x, y );

}

p.endShape( CLOSE );

}

public void drawStar( float radius )

{

float angle = PI / 5;

p.beginShape();

for ( int i = 0; i < 10; i++ ) { float x, y;

if ( i % 2 == 0 ) {

x = p.cos( i * angle ) * radius; y = p.sin( i * angle ) * radius;

} else {

x = p.cos( i * angle ) * radius/2;

y = p.sin( i * angle ) * radius/2;

}

p.vertex( x, y );

}

p.endShape( CLOSE );

}

Мы закончили написание нашей библиотеки и теперь нужно ее скомпилировать. Кликните play во вкладке Ant, так, как в предыдущем примере. Если все пройдет хорошо, вы увите на консоли в нижней части окна сообщение BUILD SUCCESSFUL. Если произошла ошибка, вы не увидите сообщение BUILD SUCCESSFUL и вам придется причитать сообщения на консоли, чтобы найти ошибку. Они помогут вам понять, что пошло не так.

Eclipse скомилирует библиотеку, сгенерирует документацию и создаст небольшой веайт для вашей библиотеки. По ходу дела Eclipse также установит версию библиотеки в папку libraries вашего скетчбука. Если вы теперь откроете Processing, вы увидите, что вы можете импортировать библиотеку MyLib, импортировать ее в скетч и набрать в PDE следующий код:

import be.vormplus.*; MyLib m;

void setup()

{

size( 640, 480 );

smooth();

m = new MyLib( this );

}

void draw()

{

background( 0 );

fill( 255, 255, 0 );

noStroke();

translate( 200, 240 );

m.drawHexagon( 100 );

translate( 240, 0 );

m.drawStar( 100 );

}

Когда вы запустите скетч, вы увидите черное окно с двумя желтыми фигурами, как на этом скриншоте:

Как это работает

Мы начали с создания нового класса и импорта основной библиотеки Processing. Им-поировав эту библиотеку мы получили возможность использовать в нашей библиотеке все функции Processing. Также мы реализовали интерфейс PConstants. Так мы получили возможность использовать в нашей библиотеке все константы Processing. Это оказалось очень удобно, потому что для рисования фигур нам понадобились постоянные PI, THIRD_PI и CLOSE.

Если мы хотим создать в нашем скетче объект MyLib, мы записываем m = new MyLib( this ); в функции setup(). Ключевое слово this – это ссылка на главный объект PApplet. Мы должны пропустить его через конструктор, чтобы использовать его. В конструкторе мы присваиваем объект PApplet (_p) внутреннему объекту PApplet (p).

public MyLib( PApplet _p )

{

p = _p;

}

Если мы хотим использовать в нашей библиотеке функции Processing, нам нужно вызвать их через объект PApplet. Так, если в обычном скетче мы пишем vertex( x, y ); здесь мы должны записать p.vertex( x, y );.

Когда вы кликните по кнопке play во вкладке Ant, Eclipse скомпилирует ваш код в библиотеку. Он также соберет все файлы в нужные папки, сгенерирует докуменатацию и сдаст небольшой сайт вашей библиотеки. Вы найтете все это в папке для распространения вашего проекта. Во время этого процесса Eclipse установит библиотеку в папку с библиотеками в вашем скетчбуке Processing. Это очень удобно, потому что вы немедленно сможете открыть Processing и протестировать свою библиотеку.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии