フォーカスモードサンプル
フォーカスモードになった時に画像が変わるサンプルです。
このサンプルのポイントは2点あります。
まず、layout.xmlですが、ノーマルモード用のComponentに入っているBitmap nodeはvisible="0"にしていません。 visibleアトリビュートのデフォルト値は1なので、name="normal"のComponentは読み込まれると表示されます。
一方、フォーカスモード用Componentは、Component全体がvisible="0"になっています。
2点目のポイントは、widget.jsにあります。 最初に画像を読み込んでしまい、onFocus、onUnfocus、onActiveそれぞれで必要に応じてnodeに対してsetVisibleしています。
setVisibleはPNGそのものを表すnodeNormalBaseなどではなく、Component全体であるnodeNormal等に対して行っています。 このようにComponentは、全体を同時に表示したり非表示にするためのグループ化に利用できます。 もちろん、nodeNormalBaseなどの各nodeに対して別々にsetVisibleを行う事も可能です。
layout.xml
<?xml version="1.0" encoding="UTF-8"?>
<Widget>
<Component name="widget">
<Bitmap name="initial-bg"/>
<Component name="normal">
<Bitmap name="normalBase"/>
</Component>
<Component name="focus" visible="0">
<Bitmap name="focusBase"/>
</Component>
<Component name="active" visible="0">
</Component>
</Component>
</Widget>
widget.js
var nodeNormal = getNode("normal");
var nodeNormalBase = getChildNode(nodeNormal, "normalBase");
var nodeFocus = getNode("focus");
var nodeFocusBase = getChildNode(nodeFocus, "focusBase");
function onLoad() {
loadImage(nodeNormalBase, "./parts/normal.png");
loadImage(nodeFocusBase, "./parts/focus.png");
}
function onUpKey() {
}
function onDownKey() {
}
function onRightKey() {
}
function onLeftKey() {
}
function onConfirmKey(type) {
}
function onFocus() {
setVisible(nodeNormal, 0);
setVisible(nodeFocus, 1);
}
function onUnfocus() {
setVisible(nodeNormal, 1);
setVisible(nodeFocus, 0);
}
function onActivate() {
setVisible(nodeNormal, 0);
setVisible(nodeFocus, 0);
}
動作例
サンプルダウンロード
ウィジェットバンドルFocusMode.zip