OpenLaszloの利点の1つは、特にクラス階層、ミックスイン、CSSサポート、および最新バージョンのOpenLaszloに追加されたCSS2 / 3機能の組み合わせを使用して、カスタムコンポーネントを比較的簡単に作成できることです。
しかし、OpenLaszlo 5.0トランクの最新コンポーネントのソースコードを確認したところ、コンポーネントをレンダリングするときにこれらの機能は使用されていないようです。例として、<checkbox>クラスを取り上げます。
<library>
<include href="base/baseformitem.lzx"/>
<include href="base/multistatebutton.lzx"/>
<resource name="lzcheckbox_rsrc">
<frame src="resources/checkbox/checkbox_off.swf" />
<frame src="resources/checkbox/checkbox_off_mo.swf" />
<frame src="resources/checkbox/checkbox_on.swf" />
<frame src="resources/checkbox/checkbox_disable_off.swf" />
<frame src="resources/checkbox/checkbox_on.swf" />
<frame src="resources/checkbox/checkbox_on_mo.swf" />
<frame src="resources/checkbox/checkbox_off.swf" />
<frame src="resources/checkbox/checkbox_disable_on.swf" />
</resource>
<!-- A checkbox component representing a boolean -->
<class name="checkbox" extends="baseformitem" pixellock="true">
<!-- FIXME: [hqm 2006-09] LPP-2244 This used to be y="$once{classroot.text_y}"
but the DHTML runtime fires an early text onheight event, which has the wrong value,
so we need to use an 'always' constraint till we fix it
-->
<text name="_title" x="16" y="${classroot.text_y}" text="${parent.text}" resize="true"/>
<!--- the y position of the text label. default: centered -->
<attribute name="text_y"
value="${this.cb.height/2 - this._title.height/2+1}" type="number"/>
<!--- @keywords private -->
<attribute name="value" setter="setValue(value)" value="false"/>
<!-- views -->
<multistatebutton name="cb" resource="lzcheckbox_rsrc" text=""
statenum="${parent.value ? 1 : 0}"
statelength="4" maxstate="1"
reference="parent">
</multistatebutton>
チェックボックスは、SWFファイルとして定義された多数のリソースで構成されています(つまり、チェックボックスのスタイルを変更する方法はありません)。DHTMLランタイムの場合、SWFリソースはPNGファイルに変換されます。
lps / components / lz / resources / checkbox / checkbox_disable_on.swf lps / components / lz / resources / checkbox / autoPng / checkbox_disable_on.png
このアプローチは非常に時代遅れのようであり、コンポーネントに描画APIとCSSの組み合わせを使用する場合と比較して明らかな欠点があります。
- 既存のコンポーネントのスキニングには、新しいリソースを作成する必要があります。
- ピクセル化効果を受け入れない限り、コンポーネントはスケーリングされません。これは、一貫性のないDPI値を使用するモバイルデバイスの数が増えている場合に特に問題になります。
- ドロップシャドウなどの効果はリソースの一部であり、アクティブ化、非アクティブ化、または変更することはできません。
- 元の.flaファイルは利用できないようであるため、既存のスタイルを変更することさえできません。
Laszloは更新されたコンポーネントセットを作成したことがありますか、それともコミュニティによって作成されたオープンソースコンポーネントセットが利用可能ですか?そうでない場合、誰かがそのようなプロジェクトを開始することを検討しましたか?