Форум

Как обращаться к функциям приложения извне?

27 декабря 2015 17:46 #6100
Привет, блендфорвебовцы !!! Сначала поздравляю с юбилеем ! 5 лет это уже приличный срок для веб-проекта, желаю успехов в развитии! И с наступающим ! Всем Бобра!

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

Как обратиться к функции приложения извне (при помощи onclick или из другой функции)? Например, у меня есть функция, отвечающая за остановку анимации в приложении:
function stop_animation (e) {
    if (e.preventDefault)
        e.preventDefault();

    m_animation.stop(_previous_selected_obj);
}


Я хочу повесить событие остановки анимации на кнопку (на событие onClick).
<div class="btnStop" onclick="stop_animation()">Стоп</div>


Очевидно, что это не будет работать, так как функция инициализируется только внутри приложения, но наверняка можно к ней обратиться напрямую или нет?
27 декабря 2015 21:11 #6103
Ну это же основы javascript.
Как самое простое, это повесить событие на объект, получив его по id.
Пример

Вообще от себя рекомендую по учить основы работы с DOM деревом и по тренироваться в работе с объектами.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 декабря 2015 22:56 #6105
Наверно надо еще сказать что событие надо указать "внутри приложения"
/**
 * callback executed when the app is initizalized 
 */
function init_cb(canvas_elem, success) {

    if (!success) {
        console.log("b4w init failure");
        return;
    }
//например тут 
document.getElementById('ButtonId').onclick = stop_animation;
}
    load();
}

<div id="ButtonId" class="btnStop" >Стоп</div>


Ну я делаю так

точнее я делаю так
ButtonId.onclick = stop_animation; 

Дорогу осилит идущий
27 декабря 2015 23:57 #6108
Спасибо, большое!

Каюсь, не хватает знаний в программировании. Исправлюсь.

24 марта 2016 16:02 #8492
А как можно обратиться к функции, определённой внутри одного из модулей из программы не входящей в область видимости?
24 марта 2016 16:20 #8493

Ответ на сообщение пользователя Igisdara
А как можно обратиться к функции, определённой внутри одного из модулей из программы не входящей в область видимости?

Добрый день.

Вы имеете ввиду, что у вас есть несколько ваших (пользовательских, написанных вами) модулей и вы хотите использовать в одном из них функции, объявленные в другом?

"use strict";


b4w.register("first_module", function(exports, require) {

var m_app       = require("app");
var m_data      = require("data");
//.................
exports.very_important_func = very_important_func;
function very_important_func(params) {
//.................
}
//.................
};

b4w.register("second_module", function(exports, require) {

var m_app       = require("app");
var m_data      = require("data");
var m_first_mod   = require("first_module");
//.................
function func(params) {
//.................
m_first_mod.very_important_func(params)
//.................
}
//.................
};


Функция very_important_func объявлена в одном модуле, а используется в другом. Для подобного существует объект exports. аналогичным образом можно предавать константы и т.д.
Разработчик Blend4Web
24 марта 2016 16:21 #8494
Между модулями общаемся так:
b4w.register("tools", function(exports, require) {

	exports.get_head = function(){
		//...
		var head = 23;
		return head;
	}

});

b4w.register("chat", function(exports, require) {

	var m_tools = require("tools");
	
	var tools_head = m_tools.get_head();
	// tools_head == 23

});


Обратиться к функции модуля из "корня" можно попробовать так
var _tools = b4w.require('tools');
var tools_head = _tools.get_head();
// tools_head == 23
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.