私はJustinmindのAPIを使ってプラグインを開発しています。私が必要とするのは、基本的にIDで要素を見つけることです。しかし、APIにはfindById()のようなメソッドはありません。ドキュメント全体を検索したので、 hereです。私はメソッドを作成しなければならないと仮定します。私は、このページをデザインするでしょう複合オブジェクト内のオブジェクトを見つける
:問題は
は、私は次のページのレイアウトを持っていると仮定しJustinmindするために、特定のではないですが、ここで私は、問題とJustinmindにおける一般的な構造の詳細を説明していますJustinmind以下hieararchyのように:Justinmind APIで
Screen
----Image
----Group
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
----Text
----Text
----Text
、画面がICanvasオブジェクトです。画面はmyScreenという変数に保存されています。次に、getApiRoot()は、ページの一番上のコンポーネントを返します。その後、すべてのコンポーネントは子であり、getApiChildren()メソッドを介してアクセスできます。
List<IComponent> components = myScreen.getApiRoot().getApiChildren();
上記のコードは、画像、グループ、テキスト、つまり1次検索コンポーネントを返します。たとえば、次のように私は、最初のボタンのラベル(概要)にアクセスすることができます。
IComponent group = components.get(1); //Returns the Group
IComponent button1 = group.getApiChildren().get(0); //Returns the first button group, which is the first child of group
IComponent label1 = button1.getApiChildren().get(1); //Returns the label, which is the second child of the first button group
を見ての通り、私はいつもgetApiChildren()メソッドによってコンポーネントにアクセスします。そして、これは大規模かつ動的なページではあまり実行可能ではありません。例えば、私が書いているプラグインは、ラベルがボタングループにないときに警告を発するでしょう。ラベルの存在を確認するには、getApiChildren()メソッドですべての画面コンポーネントをトラバースする必要があります。
私は木を経由して、それを表現することができます
しかし、この構造は常に変化します。ツリーやハッシュマップを構築する必要がありますか?非常に複雑なオブジェクトの中でオブジェクトを見つける最良の方法は何ですか?
実現可能なソリューションのように見えます。私はそれを試してみる、ありがとう! –