Canvas Texture
18 декабря 2015 12:59
18 декабря 2015 17:53
18 декабря 2015 17:59
20 декабря 2015 22:24
Что-то у меня опять лыжи не едут
на радостях скачал релиз-кандидат и давай пробовать рисовать на канвас-текстурах.
но почему-то пишет мне в консоли "B4W EXPORT ERROR: Empty canvas texture ID for texture "CT". Material: "Tex"."
а потом: "B4W ERROR: Couldn't find canvas texture with this name: CT"
а на прошлой версии у меня все получалось…
сценку приложил. развертку сделал, все вроде по докам…
на радостях скачал релиз-кандидат и давай пробовать рисовать на канвас-текстурах.
но почему-то пишет мне в консоли "B4W EXPORT ERROR: Empty canvas texture ID for texture "CT". Material: "Tex"."
а потом: "B4W ERROR: Couldn't find canvas texture with this name: CT"
а на прошлой версии у меня все получалось…
сценку приложил. развертку сделал, все вроде по докам…
Дорогу осилит идущий
21 декабря 2015 09:54
21 декабря 2015 10:01
25 декабря 2015 16:04
Вернемся к нашим баранам
загрузка сцены происходит при нажатии кнопки LoadMenu, функция LoadMainMenuF
при загрузке я собираю массив… да в общем то вот кусок кода с комментариями)
так вот проблема в том, что на всех элементах одна и та же надпись…
при чем иногда она равна первому элементу массива, иногда второму… иногда третьему… потому я стал выгружать все элементы перед тем как загрузить(в случае если неоднократно нажимать кнопку), и стало всегда равно последнему элементу массива…
загрузка сцены происходит при нажатии кнопки LoadMenu, функция LoadMainMenuF
при загрузке я собираю массив… да в общем то вот кусок кода с комментариями)
//Событие на нажатие кнопки LoadMenu
function LoadMainMenuF() {
m_data.unload();
m_data.load("MainMenu.json", loaded_cb, null, null, true );
}
//Событие при загрузке сцены
function loaded_cb(data_id, success) {
var LoadedObject = m_scenes.get_object_by_name("MainMenu1");//получили нужный объект из сцены
var MenuData = GetMenuArray() //собрали массив из таблицы
CanvasTexPrint(LoadedObject,"CT",MenuData[0][0]); //пишем на нем первый элемент массива
m_scenes.show_object(LoadedObject); //показываем его
LoadPosition = 0.4;
//скачем по массиву
for (var a = 1; a < MenuData.length; a++){
var CopiedObjName = m_scenes.get_object_name(LoadedObject)+a;//имя нового элемента
var CopiedObj = m_obj.copy(LoadedObject,CopiedObjName);//получаем копию загруженного элемента
//m_scenes.get_object_by_dupli_name("MainMenu1",CopiedObjName);
m_scenes.append_object(CopiedObj); //добавляем его в сцену
console.log(m_scenes.get_object_name(CopiedObj) + " loaded");
m_trans.set_translation(CopiedObj, 0, 0, LoadPosition); //перемещаем его куда надо
console.log(m_scenes.get_object_name(CopiedObj) + " moved to " +LoadPosition);
CanvasTexPrint(CopiedObj,"CT",MenuData[a][0]); //пишем на нем элемент массива
//console.log("Hidden: " + m_scenes.is_hidden(CopiedObj));
LoadPosition = LoadPosition + 0.4;
}
console.log("Count of Selectable objects: " + m_obj.get_selectable_objects().length);
}
//Функция создания надписи на канвас-текстуре
function CanvasTexPrint (objCanvas,TexName,PrintData){
var ctx_image = m_tex.get_canvas_ctx(objCanvas, TexName);
if (ctx_image) {
var img = new Image();
img.src = "Background.png";
img.onload = function() {
ctx_image.drawImage(img, 0, 0, ctx_image.canvas.width,
ctx_image.canvas.height);
ctx_image.fillStyle = "rgba(255,255,255,255)";
ctx_image.font = "80px Arial";
ctx_image.shadowColor = "#000";
ctx_image.shadowOffsetX = 5;
ctx_image.shadowOffsetY = 5;
ctx_image.fillText(PrintData,5, 300);
m_tex.update_canvas_ctx(objCanvas, TexName);
}
}
}
так вот проблема в том, что на всех элементах одна и та же надпись…
при чем иногда она равна первому элементу массива, иногда второму… иногда третьему… потому я стал выгружать все элементы перед тем как загрузить(в случае если неоднократно нажимать кнопку), и стало всегда равно последнему элементу массива…
Дорогу осилит идущий
25 декабря 2015 16:23
25 декабря 2015 16:45
25 декабря 2015 18:54
Да, именно это имел ввиду. Подзабыл что свойство называется "Dynamic Geometry". Приношу извинение.
Мы решили, что копирование канвас-текстур должно происходить только при "глубоком" копировании.
Из консоли следует, что объект не скопировался, потому что не имеет динамической геометрии, функция копирования вернула нуль, далее по коду нуль попытался добавиться на сцену.
Написали бы сразу как не получилось.
Мы решили, что копирование канвас-текстур должно происходить только при "глубоком" копировании.
Из консоли следует, что объект не скопировался, потому что не имеет динамической геометрии, функция копирования вернула нуль, далее по коду нуль попытался добавиться на сцену.
Написали бы сразу как не получилось.