Форум

Сообщения, созданные пользователем stilist
27 сентября 2016 15:25
То есть, опять для понимания основ: функция является спусковым крючком выражения console.lof, а без нее, выражение просто назначается методу .onclick, а не результату его работы?
Алексей
27 сентября 2016 14:24
Это код в основном js файле:
function load_cb(data_id, success) {

if (!success) {
console.log("b4w load failure");
return;
}

// m_app.enable_camera_controls(true,true);

console.log(s_movs.setup_movement, s_interface.setup_interface);
s_interface.setup_interface();
s_movs.setup_movement();

}


код в s_interface:
b4w.register("interface", function(exports, require) {

var m_app = require("app");

exports.setup_interface = function () {

function init_interface() {
var controls_container = document.createElement("div");
controls_container.id = "controls_container";

var func_one = create_button("FUNCTION_ONE");
func_one.onclick = console.log('Turned on freelook');
controls_container.appendChild(func_one);

var func_two = create_button("FUNCTION_TWO");
func_two.onclick = console.log('Turned on freelook');
controls_container.appendChild(func_two);

document.body.appendChild(controls_container);
}

function create_button(caption) {
var button = document.createElement("div");
button.className = "button_container";
….и так далее по созданию кнопок…

Код в s_movs:
b4w.register("movements", function(exports, require) {

var m_ctl = require("controls");
var m_scs = require("scenes");
var m_phy = require("physics");
var m_cons = require("constraints");
var m_cam = require("camera");
var m_cont = require("container");
var m_mouse = require("mouse");

var _vec2_tmp = new Float32Array(2);


exports.setup_movement = function() {


var camobj = m_scs.get_active_camera();
console.log(camobj);
var character = m_scs.get_first_character();
console.log(character);
if (character) {
var angles = m_cam.get_camera_angles_char(camobj, _vec2_tmp);
console.log(_vec2_tmp);
m_phy.set_character_rotation(character, angles[0], angles[1]);
}
m_cons.append_stiff_trans(camobj, character, [0, 0.7, 0]);
…и далее там манифолы и т.д.

Так вот, сообщения 'Turned on freelook' выводятся при загрузке модели, хотя на кнопки я не нажимал еще. (см.приложение)

Вопрос: почему и как сразу понять корректную структуру работы со всеми настройками в контексте b4w окружения (колбэков, регистраций модулей и глобальных объектов)
Алексей
27 сентября 2016 13:21
Все, функции внутри b4w нашел - супер!
Алексей
27 сентября 2016 13:08
При загрузке модели на медленном канале (5мбит) приходится долго ждать пока даже счетчик загрузки появится - как можно сразу включить какую-нибудь развлекашку для пользователя, чтобы он не подумал, что все зависло????
Алексей
27 сентября 2016 11:43
Роман, спасибо за пояснения.
Да, действительно, у меня этими именами названы манифолды.

По процессам в памяти компьютера, подскажите, если в load_cb у меня есть две функции:
s_interface.setup_interface(); //делает dev, созадает кнопки, на onclick вешает enable_camera_controls и disable…,соответственно,
s_movs.setup_movement(); //делает ручное управление.

У меня при первичном проходе программы видим запускаются все события onclick, потому что console.log выводит тестовое события "якобы был onclick" в консоль уже при загрузке сцены.

Это специфика интерпретации javascript - что он при назначении переменных все функции по разу запускает?
Какой бы Вы посоветовали более грамотный способ: не напрямую включать управляющие функции от кнопок, а переключать какое-нибудь значение в tmp, которое потом будет отслеживаться в функции с манифолдами и переключать куски управления через if? Или еще как-нибудь?

Насчет b4w - понял, спасибо. Подскажите теперь насчет модулей, хочу например что-нибудь из scenes запустить потестить на результат, а консоль пишет, что не находит такого имени, хотя при назначении breakpoint такие переменные находятся, но смысла в них при отсутствии сцены нет…. (с js и прочей "web разработкой" ковыряюсь третий день, поэтому хочу максимально быстро для себя все это понять и перейти к полноценной работе).

Заранее спасибо.
Алексей
26 сентября 2016 17:54
mac os (safari), винда (IE или хром). но двое уже было знакомых, которых я просил посмотреть модель на предмет скорости загрузки и они жаловались, что давят на wasd и у них не двигается персонаж.
Алексей
26 сентября 2016 17:50
Добрый вечер,

Подскажите, если у меня есть два импортированных модуля - один с create_sensor_manifold на управление кнопками, а другой с созданием двух кнопок в канвасе и переключением по нажатии на одну из них в режим enable_camera_controls, так вот при загрузке сцены она вся переключается в режим enable_camera_controls и при нажатии на disable_camera_controls обратно в ручной режим не переключается.

Насколько я понимаю, необходимо эту функцию загонять в функцию управления от кнопок, так как она сбивает настройки управления, переводя их на управление камерой, а дальше заново настройки ручного управления просто не инициируются, так?

Второй вопрос: как в консоли после того, как сцена загрузилась, получить доступ к модулям, чтобы вручную поковыряться с объектами? В настоящее время у меня большая часть переменных и модулей после загрузки сцены стали недоступны.
Алексей
23 сентября 2016 20:48
Добрый вечер,

У многих с кем сейчас общаюсь на браузеры установлены какие-то дополнения - пунто свичеры и т.д., что мешает управлять клавиатурой. Есть какая-нибудь возможность все это отключать или запускать модель в отдельном js окне?
Алексей
23 сентября 2016 00:42
Доброе утро,

Есть необходимость запихнуть еще одного-двух-трех персонажей в игровой мир. Есть какой-нибудь пример скрипта для нескольких юзеров?
Алексей
22 сентября 2016 10:32
есть решение для браузеров, не поддерживающих пойнтер лок. для них удобнее применять request_mouse_drag из аддона mouse.js
добавьте его заместо request_pointerlock в коде примера

Я просто хотел бы управлять персонажем не мышкой, а кнопками со стрелками, плюс wasd конечно для перемещения.
Алексей