Loader3D QML Type

URL またはコンポーネントから 3D サブツリーを動的にロードできるようにします。詳細...

Import Statement: import QtQuick3D
Inherits:

Node

プロパティ

シグナル

メソッド

  • object setSource(url source, object properties)

詳細説明

Loader3D は、Qt Quick 3D の QML コンポーネントを動的にロードするために使用されます。

Loader3Dは、QMLファイル(source プロパティを使用)またはComponent オブジェクト(sourceComponent プロパティを使用)をロードすることができます。例えば、コンポーネントをオンデマンドで作成する場合や、パフォーマンス上の理由からコンポーネントを不必要に作成しない場合などです。

注意: Loader3Dは、Loader と同じように動作します。両者の違いは、Loader が、Item を継承するオブジェクトを動的にロードする方法を提供するのに対し、Loader3D は、Object3D を継承し、3D シーンの一部であるオブジェクトをロードする方法を提供する点です。

プロパティ Documentation

active : bool

このプロパティは、Loader3D が現在アクティブであれば、true となる。このプロパティのデフォルト値はtrue です。

Loader3D が非アクティブの場合、source またはsourceComponent を変更しても、Loader3D がアクティブになるまでアイテムはインスタンス化されません。

値を非アクティブに設定すると、ローダーによってロードされたitem は解放されますが、sourcesourceComponent には影響しません。

非アクティブなローダーのstatus は、常にNull である。

source およびsourceComponentも参照のこと


asynchronous : bool

このプロパティは、コンポーネントが非同期にインスタンス化されるかどうかを保持します。デフォルトはfalse です。

source プロパティと併用すると、ロードとコンパイルもバックグラウンド・スレッドで実行されます。

非同期にロードすることで、コンポーネントによって宣言されたオブジェクトが複数のフレームにわたって作成され、アニメーションの不具合が発生する可能性が低くなります。非同期にロードする場合、ステータスはLoader3D.Loading に変わります。コンポーネント全体が作成されると、item 、ステータスがLoader.Readyに変わります。

非同期ロードの進行中にこのプロパティの値をfalse に変更すると、直ちに同期的に完了します。これにより、非同期ロードを開始し、非同期ロードが完了する前にLoader3D コンテンツにアクセスする必要がある場合に、強制的に完了させることができます。

アイテムが徐々にロードされるのを見ないようにするには、visible を適切に設定します。

Loader3D {
    source: "mycomponent.qml"
    asynchronous: true
    visible: status == Loader3D.Ready
}

このプロパティは、オブジェクトのインスタンス化にのみ影響することに注意してください。


item : object [read-only]

このプロパティは、現在ロードされているトップレベル・オブジェクトを保持します。


progress : real [read-only]

このプロパティは、ネットワークからの QML データのロードの進行状況を 0.0(何もロードされていない)から 1.0(ロードが完了した)まで保持します。ほとんどの QML ファイルは非常に小さいので、この値は 0 から 1 へと急速に変化します。

statusも参照してください


source : url

このプロパティは、インスタンス化するQMLコンポーネントのURLを保持します。

現在ロードされているオブジェクトをアンロードするには、このプロパティに空文字列を設定するか、sourceComponentundefined を設定してください。source に新しい URL を設定すると、前の URL で作成されたアイテムもアンロードされます。

sourceComponentstatusprogressも参照してください


sourceComponent : Component

このプロパティは、インスタンス化するComponent を保持します。

Item {
    Component {
        id: redCube
        Model {
            source: "#Cube"
            materials: DefaultMaterial {
                diffuseColor: "red"
            }
        }
    }

    Loader3D { sourceComponent: redCube }
    Loader3D { sourceComponent: redCube; x: 10 }
}

現在ロードされているオブジェクトをアンロードするには、このプロパティをundefined に設定します。

source およびprogress参照して ください。


status : enumeration [read-only]

このプロパティは QML のロード状態を保持します。以下のいずれかになります:

定数説明
Loader3D.Nullローダーが非アクティブであるか、QMLソースが設定されていない。
Loader3D.ReadyQML ソースがロードされました。
Loader3D.LoadingQML ソースは現在ロード中です。
Loader3D.ErrorQML ソースのロード中にエラーが発生しました。

このステータスを使用して、最新情報を提供したり、何らかの方法でステータスの変更に対応したりします。例えば、以下のようなことが可能です:

  • 状態変更をトリガーする:
    State { name: 'loaded'; when: loader.status == Loader3D.Ready }
  • onStatusChanged シグナルハンドラを実装する:
    Loader3D {
        id: loader
        onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded')
    }
  • ステータス値にバインドする:
    Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }

ソースがローカル・ファイルの場合、ステータスは最初はReady(またはError)であることに注意。この場合、onStatusChanged シグナルは発生しませんが、onLoaded シグナルは起動されます。

progressも参照してください


シグナル・ドキュメント

loaded()

このシグナルは、statusLoader3D.Ready になったとき、または初期ロードに成功したときに発せられる。

対応するハンドラはonLoaded

注意: 対応するハンドラはonLoaded です。


メソッド・ドキュメント

object setSource(url source, object properties)

与えられたproperties を持つ、与えられたsource コンポーネントのオブジェクトインスタンスを作成します。properties 引数は省略可能です。このインスタンスは、読み込みとインスタンス化が完了すると、item プロパティからアクセスできるようになります。

この関数が呼ばれた時点でactive プロパティがfalse の場合、与えられたsource コンポーネントはロードされませんが、source と初期properties はキャッシュされます。ローダーがactive になると、source コンポーネントのインスタンスが、初期properties が設定された状態で作成される。

この方法でコンポーネントのインスタンスの初期プロパティ値を設定しても、関連するBehaviorはトリガされません

この関数を呼び出した後、ローダーactive を設定する前にsource またはsourceComponent を変更すると、キャッシュされたproperties はクリアされることに注意。

sourceactiveも参照してください


©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。