Перехід з DevelStudio · jphp-group

Про можливості DevelNext, яких немає у DevelStudio

Загальний опис та знайомство з новими можливостями DevelNext, яких не було у DevelStudio.

Якщо ви прийшли в DevelNext з develstudio, то вам потрібно знати про нові механізми створення програм у цьому новому середовищі програмування.

  1. Поведінки - дозволяють змінити логіку роботи з компонентами, схожі на властивості.
  2. Події з параметрами - події можуть бути навішені з параметром, наприклад, на клавішу Enter.
  3. Конструктор подій - візуальне програмування блоками, можливість сконвертувати це все у скрипт.
  4. Ігрові можливості - фізичний 2D двигун, спрайти, ігрові сцени, клонування.
  5. Модулі - у develnext всі невізуальні компоненти винесені в окремі модулі, які треба підключати до форм.

Поведінки, behaviours

Ця можливість прийшла з конструкторів ігор Construct Classic та Construct 2 . Сама ідея в тому, що всі об'єкти між собою рівні та мають однакові властивості, але для того, щоб надати об'єкту новий функціонал використовують поведінку. Чому не можна просто додати об'єкту ще трохи властивостей, навіщо все це виділяти в поведінки? По-перше, поведінок багато, якщо все це перекладати на властивості буде незручно в цьому розбиратися, їх буде занадто багато. По-друге, поведінки це не зовсім властивості, вони можуть бути функціональнішими.

У розробцінаступу, наприклад, є поведінка для того, щоб об'єкт "Мігал", це поведінка анімації. А є поведінка, щоб об'єктом можна було керувати стрілками клавіатури. І таких поведінки дуже багато.

Події з параметрами

У develnext це робиться простіше, через події з параметрами. У середовищі виможете створити індивідуальну подію на натискання саме клавіші Enter, будь-яких інших клавіш і навіть відразу поєднань клавіш, за типом Ctrl + X, Alt +. і т.д.

Те саме стосується подій зіткнення, скролінгу, мишки та деяких інших, скрізь є параметр.

Конструктор подій

Ігрові можливості

Такого не було у develstudio. Що стосується ігрових можливостей в develnext?

Все це дозволяє реалізувати 2D ігри різних жанрів.

Модулі

Якщо ви прийшли з develstudio, тоді уявіть, що модуль у develnext це така ж форма, тільки з набором одних невізуальних компонентів, на неї не можна додавати візуальні компоненти на кшталт кнопок, текстів тощо.

Ось такий модуль можна сформувати з потрібних вам таймерів, діалогів і т.д., реалізувати там потрібну вам логіку і підключити до форми або навіть до декількох форм.

Не забувайте, щоб підключити модуль до форми, є властивість "Модулі" самої форми.

Як звертатись до компонентів?

Що використовувати замість c("button"), як звертатися до невізуальних компонентів на кшталт таймера та багато іншого.

У розробціstudio звернення до компонентів відбувалося через функцію c(), наприклад c("button1"). У develnext це відбувається трохи інакше.

Простий випадок

Наприклад, вам необхідно просто вивести повідомлення з поля введення, в develstudio це робилося так:

У DevelNext це робиться через $this :

Складна ситуація

Іноді виникає ситуація, коли назву компонента потрібно взяти з рядка, у DevelStudio з цим у вас не було проблем, ви просто робили, наприклад, c("button_$index") . А в develnext це можна зробити так:

Компоненти іншої форми

Щоб звернутися докомпоненту з іншої форми, DevelNext необхідно використовувати метод ->form() , наприклад так:

Цей код аналогічний коду з develstudio $text = c("Form2->edit3")->text .

Невізуальні компоненти

У DevelNext усі невізуальні компоненти винесені у модулі. До форми підключаються модулі разом із усіма їх компонентами. Звернення до компонентів модуля з форми виглядає так само, як і зазвичай:

Якщо у вас є MainModule, який підключений до вашої форми, то до всіх його компонентів можна звертатися як до компонентів форми.

Доступ до візуальних компонентів з модуля

Ситуація аналогічна, якщо модуль підключений до форми, то з модуля можна звертатися всім компонентам його форми також через $this .

Чим замінити змінну $self у події об'єкта?

У develstudio змінна $self вказувала на поточний об'єкт події, яка заміна є в develnext.

У develnext в кожну подію передається спеціальний об'єкт у змінній $event , яка є об'єктом класу php\gui\event\UXEvent через цей об'єкт можна отримати об'єкт події:

Простими словами, у develnext повний аналог $self це $event->sender.

Як додати невізуальний компонент типу таймера?

Стаття про невізуальні компоненти в develnext, як їх використовувати і де додати.

Використовуйте модулі, наприклад, у вас спочатку повинен бути модуль MainModule у проекті, в який ви можете додати скільки завгодно таймерів, діалогів та інших модульних компонентів. Цей модуль можна підключити до вашої форми через властивість Модулі самої форми.

Не забувайте підключати модулі до форми.

З форми вам будуть доступні всі компоненти її модулів через $this, а з модуля - всі компоненти його форм,теж через $this.

Чим замінити константу DOC_ROOT?

Як отримати відносний шлях до запущеної програми?

Develnext не має схожої константи, але відносний шлях програми можна легко отримати через поєднання символів ./ :

Загалом це поєднання не обов'язково, і ви можете звертатися до відносних шляхів програми і без нього:

Шляхи, які починаються НЕ із символу / або не з назви диска (наприклад, С: ), вважаються відносними.