alex_lip
alex_lipApril 26, 2018, 7:49 a.m.

Динамическое создание объектов

Хочу создать несколько объектов на основании одного QML файла - делаю так


function createMobs() {
    var x,y;
   
    var component = Qt.createComponent("../content/file.qml");

    for (var i=0; i<3; i++) {

//----- ошибка -----
        var object = component.createObject(i_tem);
//----------------------

        x=Math.ceil(Math.random() * i_tem.width);
        y=Math.ceil(Math.random() * i_tem.height/3*2);

        object.x = x;
        object.y = y;

        object.objectName="name"+countz.toString();
        object.opacity=1;

        console.log(object.objectName);
        countz_count ++ ;
    }

}
На второй итерации цикла в строке
var object = component.createObject(i_tem);
появляется ошибка QCoreApplication::postEvent: Unexpected null receiver при чем объекты создаются - все вроде бы нормально - но почему ошибка?

Пробовал объявлять глобальный  массив объектов с приращением id
var object = [];
var component=[];
все то же. Куда смотреть?




We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

4
alex_lip
  • April 26, 2018, 8:47 a.m.

Это какая то проблема в самом файле

file.qml
    Evgenii Legotckoi
    • April 26, 2018, 2:36 p.m.

    Насколько помню, файлы объектов нужно называть с большой буквы. Может из-за этого QML не понимает, что вообще происходит. Хотя конечно странно тогда, что всё создаётся.


    У меня вот в этой статье есть пример того, как сделать то, что вы делаете. Сравните ваш пример с этим. Возможно найдёте какие-нибудь несостыковки, которые вам подскажут решение вашей проблемы.
      alex_lip
      • April 27, 2018, 2:12 a.m.

      Проблему локализовал - но вопроса не решил. Дело в том, что в погружаемом файле(он называется с большой буквы) есть звуковой эффект


          SoundEffect {
              id: playSoundZobie
              source: "../sfx/ZombieWalk.wav"
              loops: SoundEffect.Infinite
              volume : 0.3
          }

      Вот он и генерирует ошибку при "клонировании" начиная со второго объекта. При чем звуки нормально работают. То есть все хорошо, но ошибка вылазит. Конечно можно ее просто игнорировать - но хотелось бы разобраться...

        Evgenii Legotckoi
        • April 27, 2018, 3:32 a.m.

        Со звуком QML работает не самым лучшим образом... Я все звуковые эффекты подключал в игровой сцене, а из игрового объекта кидал сигнал, который запускал проигрывание звука. Но тогда вылазит другая проблема. Может появляться заикание из-за того, что SoundEffect один, а запускает его множество объектов, поэтому ваш подход в вашем случае верный, у меня таких игровых объектов просто меньше было.


        По идее ошибки такой быть не должно, вы ведь не клонируете объект, а именно создаёте его. Обычно, такая ошибка вылазит, когда применяется deleteLater к объекту, который является объектом null QObject (не совсем корректная формулировка конечно).
        На некоторых форумах я видел информацию о том, что просто не выставлено свойство visible: true

        В общем достаточно сложно утверждать, откуда именно прилетает эта ерунда.

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          AD

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:50points,
          • Rating points-4
          m

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:80points,
          • Rating points4
          m

          C ++ - Test 004. Pointers, Arrays and Loops

          • Result:20points,
          • Rating points-10
          Last comments
          ИМ
          Игорь МаксимовNov. 22, 2024, 11:51 a.m.
          Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          Evgenii Legotckoi
          Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
          Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
          A
          ALO1ZEOct. 19, 2024, 8:19 a.m.
          Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
          ИМ
          Игорь МаксимовOct. 5, 2024, 7:51 a.m.
          Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
          d
          dblas5July 5, 2024, 11:02 a.m.
          QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          Now discuss on the forum
          Evgenii Legotckoi
          Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
          t
          tonypeachey1Nov. 15, 2024, 6:04 a.m.
          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
          NSProject
          NSProjectJune 4, 2022, 3:49 a.m.
          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
          9
          9AnonimOct. 25, 2024, 9:10 a.m.
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

          Follow us in social networks