一番下の要素をチェックすると、(Z軸に沿って)一番下の要素が得られますが、これは望ましくありません。要素のZ順序が、おそらく呼び出しによって変更されElement.toBack()
、チェックが完全に無効になる場合を考えてみます。
代わりに、elements配列を反復処理し、特定のタイプの最後の要素(たとえば、 circle )を取得することによって、よりセマンティックなアプローチを目指すことができます。
Raphaëlでは、組み込みの関数セットを拡張することもできるため、その目的のためだけに関数を紙の要素にアタッチできます。false
次のスニペットは、渡されたタイプの最後の要素を紙から返す、またはそのような要素が見つからなかった場合に、そのような関数の例を示しています。
Raphael.fn.last = function(type) {
var element;
this.forEach(function(el) {
if (el.type == type) {
element = el;
}
});
return element || !!element;
};
紙の要素をインスタンス化する前に、必ずこの関数をアタッチしてください。それを呼び出すだけで、目的の要素タイプを渡すことができます。
var r = Raphael(paper, '100%', '100%');
// ...
// add elements etcetera
// ...
var lastCircle = r.last('circle');
提案された実装の場合、これは重い操作になる可能性があることに注意してください-紙に多くの要素が含まれている場合、ここでの目的は、機能拡張の概念を提供し、思考プロセスを開始することです。機能を向上させて効率を上げてください。