2012年5月12日土曜日

[PlayStation Suite] ウィジットにクリックイベントを持たせるには

How to make Cliclable widgets

PlayStation Suite(以下、PSS)アプリケーションは、クリックイベントを取得できるButtonウィジットがあらかじめ用意されています。
Labelでもウィジットでもクリックイベントを取得したいことがあるので作ってみました。

幸いなことにPSS StudioにはButtonクラスのソースが付属しています。
C:\Program Files (x86)\SCE\PSS\source\UI\source\Button.cs
クリックイベントの付加にあたり、このソースを参考にしました。

イベントの名前はOnClick としました。

ClickableLabel.cs
AppNMain.cs(エントリーポイントを持つクラス)
このソースをビルドするには Sce.Pss.Highlevel.UI の参照が必要です。
ソリューションエクスプローラーの[参照]を右クリックして[参照アセンブリの編集]でSce.Pss.Highlevel.UIを追加するとビルドできます。

実行するとこんな画面になります。
画面のラベルをクリック(タップ)するたびに現在時刻を表示します。
ClickableLabelはLabelを継承してクリックイベントを受け取っています。
継承するクラスをImageBoxウィジットやPanelウィジットに変えてもイベントの取得ができることを確認しています。

Sony Tabletをはじめ、PlayStation Suite CertifiedのXperia(SO-01C、SO-02C、IS11S)はゲームパッドがありません。
ゲームパッドが無い端末はタッチスクリーンにバーチャルなゲームパッドが表示されますが、Androidアプリのようにタッチスクリーンで操作できた方が便利だと思います。
このブログを書いている時点(PSS SDK0.96~0.97)ではScrollPanelはゲームパッドでスクロールできません。フリック操作でしかスクロールできません。
ゲームパッドで操作するには入力の応じて全てのウィジットをSetPositionで移動させればコードが必要です。

Sce.Pss.Highlevel.UIを使ったアプリやゲームパッド無しの端末はタップで操作できる画面設計が使いやすいと思い、このブログを書きました。


以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿