1

qooxdooで書かれたカラオケプレーヤー/キーフレームアニメーションシステムなどを想像してみてください。Player オブジェクトには、現在の位置を反映するプロパティがあります。プロパティは、ユーザーが任意の位置にジャンプできるように、スライダーなどの GUI コントロールにバインドされます。同時に、再生時に再生メカニズムによって位置が徐々に更新されます。

問題は、これら 2 つのケースで異なるロジックを適用する必要があることです。

1) 「位置」プロパティが外部から設定された場合 (たとえば、ユーザーがスライダーをクリックした場合)、いくつかの複雑なロジックが適用されます: アクティブな詩/行/音節/キーフレームのペアを再計算し (おそらく二分探索を使用して)、アクティブにする必要があります。それ;
2) 再生メカニズムの反復によってプロパティが更新された場合、ロジックは非常に単純です。次のオブジェクトの境界を越えたかどうかのみを確認して、そこに進む必要があります。

どちらの場合も、標準ロジック (インスタンス チェックと変更イベントの起動) を呼び出す必要があります。$$user_position 変数を直接設定して複雑な「適用」メソッドをバイパスするか、現在のコール スタックを分析してそれに応じて別のパスを取ることを考えていましたが、どちらの方法も汚いハックのようです。そのため、qooxdoo the Right™ Way® で述べられていることを実装する方法についての推奨事項に感謝します。

4

1 に答える 1

2

このような状況の一般的なパターンは、プロパティ自体に過度の機能 (つまり、その apply メソッド) を負担させないことだと思います。むしろ、プロパティをかなり単純にして、現在の位置を記録するためだけに使用してください。次に、あなたが書いたように、アルゴリズムは異なりますが、両方とも位置プロパティを更新する「goto」や「next」などのメソッドを考案します。

于 2013-08-08T15:16:17.543 に答える