Blu-Disc Studio: Создаём меню на Java. часть II

manager.getCurrentAudioID(); - считать текущее значения аудио и … все, считали и забыли
manager.setGPR(20, 1); - записать в GPR[20] значение 1 - зачем?

То что я описал - требует навыков программирования - без них Вы ничего не сделаете.

@CDK, Мне теперь обучаться программированию, или достаточно изучить основы Java?

По сути это одно и то же.

Смотрю:
в начале назначаете GPR20 равным 1
Потом спрашиваете “если GPR(20) не равен 1,то…” и поскольку услвие не выполняется скрипт не работает,
а если бы сработал то там снова setGPR[20]=1
Вот и выхдит что GPR(20) всегда равен 1

Тут задача фиксирвать изменения аудиотрека и плучаются взаимисключения: изменения трека привязаны к gpr, а изменения gpr привязаны к треку.

Здравствуйте, может кто-нибудь прислать ссылку на рабочую версию софта BD studio?
Я благодарен за любую поддержку!

Hello, can someone send me a link for a working version of BD Studio?
Any help would be appreciated!

@Kurti,

на официальном сайте. https://blu-disc.net/downloads
on official site https://blu-disc.net/downloads

сделал скрипт из этого свича

if Audio in Movie = 1 –> [MA]: Popup: Audio [English]; [set]: GPR[20] = 1
if Audio in Movie = 2 –> [MA]: Popup: Audio [22]; [set]: GPR[20] = 1
if Audio in Movie = 3 –> [MA]: Popup: Audio [Nosferatu13fd]; [set]: GPR[20] = 1
if Audio in Movie = 4 –> [MA]: Popup: Audio [New_Records]; [set]: GPR[20] = 1
if Audio in Movie = 5 –> [MA]: Popup: Audio [Anidub]; [set]: GPR[20] = 1

и поместил этот скрипт в свич, который в AES фильма

if [GPR(20)!=1] –> [Script]

даже если заработает, что он будет делать? Я так понимаю, будет ежесекундно вызывать одно и то же меню, а это должно происходить только при смене дорожки, не так ли?

*** Добавлено ***

не, я не прав, там же условие установлено. Только условие недоделанное

[quote=“maks8881,post:138,topic:6158”]
в Start action фильма

manager.getCurrentAudioID();
далее свитч
if Audio in Movie = 1 –> [set]: GPR[1] = 1
if Audio in Movie = 2 –> [set]: GPR[1] = 2
if Audio in Movie = 3 –> [set]: GPR[1] = 3
if Audio in Movie = 4 –> [set]: GPR[1] = 4
if Audio in Movie = 5 –> [set]: GPR[1] = 5
далее
setGPR[20]== GPR[1] или сделать это в свитче выше в мультиэкшн

в AES
manager.getCurrentAudioID();
далее свитч
if Audio in Movie = 1 –> [set]: GPR[1] = 1
if Audio in Movie = 2 –> [set]: GPR[1] = 2
if Audio in Movie = 3 –> [set]: GPR[1] = 3
if Audio in Movie = 4 –> [set]: GPR[1] = 4
if Audio in Movie = 5 –> [set]: GPR[1] = 5
далее проверка:
if [GPR(20)!=GPR(1)] –> [Script], только другой:
if Audio in Movie = 1 –> [MA]: Popup: Audio [English]; [set]: GPR[20] = 1
if Audio in Movie = 2 –> [MA]: Popup: Audio [22]; [set]: GPR[20] = 2
if Audio in Movie = 3 –> [MA]: Popup: Audio [Nosferatu13fd]; [set]: GPR[20] = 3
if Audio in Movie = 4 –> [MA]: Popup: Audio [New_Records]; [set]: GPR[20] = 4
if Audio in Movie = 5 –> [MA]: Popup: Audio [Anidub]; [set]: GPR[20] = 5

как-то так. Приблизительно такая логика. Имхо.
Есть подвох: как всё это будет срабатывать, если вы поменяете дорожку не пультом, а в popup меню.

В попап сбросить GPRы в ноль чтобы не закрывалось попап.
В Аватаре примерно так и работает.

*** Добавлено ***
@shtift,
А зачем там manager.getCurrentAudioID ?

Э… Ну, да, нафиг не нужна, скопипастил не подумав. :[

в Start action фильма

свитч
if Audio in Movie = 1 –> [set]: GPR[1] = 1
if Audio in Movie = 2 –> [set]: GPR[1] = 2
if Audio in Movie = 3 –> [set]: GPR[1] = 3
if Audio in Movie = 4 –> [set]: GPR[1] = 4
if Audio in Movie = 5 –> [set]: GPR[1] = 5
далее
setGPR[20]== GPR[1] или сделать это в свитче выше в мультиэкшн

в AES
свитч
if Audio in Movie = 1 –> [set]: GPR[1] = 1
if Audio in Movie = 2 –> [set]: GPR[1] = 2
if Audio in Movie = 3 –> [set]: GPR[1] = 3
if Audio in Movie = 4 –> [set]: GPR[1] = 4
if Audio in Movie = 5 –> [set]: GPR[1] = 5
далее проверка:
if [GPR(20)!=GPR(1)] –> [Script]:
if Audio in Movie = 1 –> [MA]: Popup: Audio [English]; [set]: GPR[20] = 1
if Audio in Movie = 2 –> [MA]: Popup: Audio [22]; [set]: GPR[20] = 2
if Audio in Movie = 3 –> [MA]: Popup: Audio [Nosferatu13fd]; [set]: GPR[20] = 3
if Audio in Movie = 4 –> [MA]: Popup: Audio [New_Records]; [set]: GPR[20] = 4
if Audio in Movie = 5 –> [MA]: Popup: Audio [Anidub]; [set]: GPR[20] = 5

*** Добавлено ***

а при включенном попап работает AES?

*** Добавлено ***

блин, должен, иначе никакой таймер текучку не покажет:smile_bm:

1 лайк

Скажите пожалуйста, как очистить конкретный GPR, при загрузке диска. У меня почему-то при новом запуске диска сохраняется тот GPR, которого нет в скрипте - Project properties/Loading.

Не может он сам по себе сохраняться. Что в Advanced -> Store first … GPRs in Storage?

Ничего. Вы ведь сами сказали, что GPR в скрипте в Project properties/Loading и GPR в Store first … GPRs in Storage могут конфликтовать, поэтому я ничего не ставлю в Store first … GPRs in Storage, а только в Project properties/Loading.

Ну тогда покажите код из Project properties/Loading.

manager.setGPR(10, manager.readDataInt(“GPR10”));

Ну значит где-то еще ошибка. Присылайте проект целиком и напишите как увидеть факт сохранения не того что надо.

@CDK, Ошибки у меня нет, у меня всё просто. Я решил проблему, связанную с сохранением не того что надо, записью нужных GPR в Start action видео. На позапрошлой странице Вы написали:

А дальше все сложно. Вам нужно через какое-то время скрыть эту картинку. Я вижу только такой вариант: AES выполняется раз в секунду, значит можно его использовать как таймер. После вывода картинки в какой-то GPR пишем число 5. В AES проверяем этот GPR и если он больше 1 - уменьшаем его на 1. Если равен 1 - записываем в него 0 и скрываем картинку.

Я реализовал это, но для добавления закладок и “слишком много закладок”. У меня в AES так:

if [GPR(5)=5] –> [set]: GPR[5] = 4
if [GPR(5)=4] –> [set]: GPR[5] = 3
if [GPR(5)=3] –> [set]: GPR[5] = 2
if [GPR(5)=2] –> [set]: GPR[5] = 1
if [GPR(5)=1] –> [set]: GPR[5] = 0; анимация закрытия картинки добавления закладок, после которого следует запись в GPR 5 = 6 и скрытие за пределы экрана.
if [GPR(6)=5] –> [set]: GPR[6] = 4
if [GPR(6)=4] –> [set]: GPR[6] = 3
if [GPR(6)=3] –> [set]: GPR[6] = 2
if [GPR(6)=2] –> [set]: GPR[6] = 1
if [GPR(6)=1] –> [set]: GPR[6] = 0 и скрытие за пределы экрана “слишком много закладок”
Exclusive

При добавлении закладок, если их меньше 20, я делаю ссылку на анимацию с выводом на экран картинки и записью в [set]: GPR[5] = 5, тоже самое и с “слишком много закладок”, с записью [set]: GPR[6] = 5.
Так вот, если остановить диск на половине того что происходит в AES, то при новом запуске диска, не доведённый до конца свич в AES сохраняется.
Я в Start action видео записал [set]: GPR[5] = 6 И [set]: GPR[6] = 0, и проблемы исчезли.

Если, после того что я написал, Вы скажете чтобы я прислал проект, я пришлю.

P.S. Сложно делать переходы от одного попап к другому.

Если в свойствах проекта не включено сохранение GPR, то этого быть не должно. Пришлите проект без видео - посмотрю на генерируемый код.

Скажите пожалуйста, вот например в некоторых оригинальных дисках, которые я исследовал, несколько файлов jar, и как правило сколько jar, столько и папок с PNG.
Значит ли это, что в каждом jar свой java код? Если да, то почему в BDS только один файл jar? Ведь когда проект очень большой, java кода может не хватить, даже если всё что можно уже оптимизировано. И тогда один выход остаётся - ограничить свои фантазии.

Конечно, ради этого они и создаются.

Создать несколько проектов с разными функциями, а потом объединить их в Scenarist BD.
Разные Jarы это — разные языки меню, пара фильмов на одном диске, допматериалы выведенные в отдельные Xletы, Java-игры.
В принципе можно извратиться и даже развести в разные Jar`ы меню и фильм.
Все это (кроме Java-игр) возможно в BDS благодаря команде manager.selectTitle, но и мороки с этим может быть много.

Разумеется там возможностей больше и насколько я понял там бывают и вспомогательные Jar.