由用户创建的信息 stilist
27 September 2016 15:25
27 September 2016 14:24
Это код в основном js файле:
код в s_interface:
Код в s_movs:
Так вот, сообщения 'Turned on freelook' выводятся при загрузке модели, хотя на кнопки я не нажимал еще. (см.приложение)
Вопрос: почему и как сразу понять корректную структуру работы со всеми настройками в контексте b4w окружения (колбэков, регистраций модулей и глобальных объектов)
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 September 2016 13:08
27 September 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 разработкой" ковыряюсь третий день, поэтому хочу максимально быстро для себя все это понять и перейти к полноценной работе).
Заранее спасибо.
Да, действительно, у меня этими именами названы манифолды.
По процессам в памяти компьютера, подскажите, если в 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 September 2016 17:54
26 September 2016 17:50
Добрый вечер,
Подскажите, если у меня есть два импортированных модуля - один с create_sensor_manifold на управление кнопками, а другой с созданием двух кнопок в канвасе и переключением по нажатии на одну из них в режим enable_camera_controls, так вот при загрузке сцены она вся переключается в режим enable_camera_controls и при нажатии на disable_camera_controls обратно в ручной режим не переключается.
Насколько я понимаю, необходимо эту функцию загонять в функцию управления от кнопок, так как она сбивает настройки управления, переводя их на управление камерой, а дальше заново настройки ручного управления просто не инициируются, так?
Второй вопрос: как в консоли после того, как сцена загрузилась, получить доступ к модулям, чтобы вручную поковыряться с объектами? В настоящее время у меня большая часть переменных и модулей после загрузки сцены стали недоступны.
Подскажите, если у меня есть два импортированных модуля - один с create_sensor_manifold на управление кнопками, а другой с созданием двух кнопок в канвасе и переключением по нажатии на одну из них в режим enable_camera_controls, так вот при загрузке сцены она вся переключается в режим enable_camera_controls и при нажатии на disable_camera_controls обратно в ручной режим не переключается.
Насколько я понимаю, необходимо эту функцию загонять в функцию управления от кнопок, так как она сбивает настройки управления, переводя их на управление камерой, а дальше заново настройки ручного управления просто не инициируются, так?
Второй вопрос: как в консоли после того, как сцена загрузилась, получить доступ к модулям, чтобы вручную поковыряться с объектами? В настоящее время у меня большая часть переменных и модулей после загрузки сцены стали недоступны.
23 September 2016 20:48
23 September 2016 00:42
22 September 2016 10:32