ソフトウェアキーボード

prompt関数を利用するとソフトウェアキーボードを起動できます。 以下のサンプルでは、アクティブモード時に上矢印を押すとソフトウェアキーボードが出現します。

promptはAC2.0の機能なので、AC1.0とAC1.1では動作しないのでご注意下さい。 AC2.0を利用するには、info.xmlのscec部分に「AC2.0」と記述する必要があります。 2008年モデルからがAC2.0です。

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">
      <Bitmap name="activeBase"/>
    </Component>
  </Component>
</Widget>

widget.js


var nodeNormal     = getNode("normal");
var nodeNormalBase = getChildNode(nodeNormal, "normalBase");
var nodeFocus      = getNode("focus");
var nodeFocusBase  = getChildNode(nodeFocus, "focusBase");
var nodeActive     = getNode("active");
var nodeActiveBase = getChildNode(nodeActive, "activeBase");

var mode = 0; // 0:normal, 1:focus, 2:active

function onLoad() {
  loadImage(nodeNormalBase, "./parts/normal.png");
  loadImage(nodeFocusBase,  "./parts/focus.png");
}

function onUpKey() {
  if (mode == 2) {
    var result = prompt("keyboard name", "initial string", true);
    print(result);
  }
}

function onDownKey() {
}

function onRightKey() {
}

function onLeftKey() {
}

function onConfirmKey(type) {
}

function onFocus() {
  mode = 1;

  setVisible(nodeNormal, 0);
  setVisible(nodeFocus, 1);
  setVisible(nodeActive, 0);
}

function onUnfocus() {
  mode = 0;

  setVisible(nodeNormal, 1);
  setVisible(nodeFocus, 0);
  setVisible(nodeActive, 0);
}

function onActivate() {
  mode = 2;

  loadImage(nodeActiveBase, "./parts/active.png");

  setVisible(nodeNormal, 0);
  setVisible(nodeFocus, 0);
  setVisible(nodeActive, 1);
}


info.xml


<?xml version="1.0" encoding="UTF-8"?>
<Info>
  <name>prompt Test</name>
  <preference>0</preference>
  <height>165</height>
  <width>280</width>
  <profile>
    <spec>AC2.0</spec>
  </profile>
</Info>

サンプルダウンロード

ウィジェットバンドル : prompt.zip

IPv6基礎検定

YouTubeチャンネルやってます!