alex_lip
alex_lip26. April 2018 07:49

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

Хочу создать несколько объектов на основании одного 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=[];
все то же. Куда смотреть?




Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

4
alex_lip
  • 26. April 2018 08:47

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

file.qml
    Evgenii Legotckoi
    • 26. April 2018 14:36

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


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

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


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

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

        Evgenii Legotckoi
        • 27. April 2018 03:32

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


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

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

          Kommentare

          Nur autorisierte Benutzer können Kommentare posten.
          Bitte Anmelden oder Registrieren
          Letzte Kommentare
          A
          ALO1ZE19. Oktober 2024 08:19
          Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
          ИМ
          Игорь Максимов5. Oktober 2024 07:51
          Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
          d
          dblas55. Juli 2024 11:02
          QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          k
          kmssr8. Februar 2024 18:43
          Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
          Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
          Jetzt im Forum diskutieren
          J
          JacobFib17. Oktober 2024 03:27
          добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
          JW
          Jhon Wick1. Oktober 2024 15:52
          Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
          КГ
          Кирилл Гусарев27. September 2024 09:09
          Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
          F
          Fynjy22. Juli 2024 04:15
          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

          Folgen Sie uns in sozialen Netzwerken