2015年08月20日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(15)


今回はキャンバス(Canvas)上で手書きにより描画できるテストアプリです。



テストアプリを起動した直後のUIがこちらです。



ドラッグで線を引く事ができます。スライダにより線の幅を調整したり、消しゴムで既に引いた線を消す事もできます(こちらを参照)。




実際の様子はこちらの動画で確認できます。




これを実現している「Blocks」はこちらこちらです。



白い消しゴムを表示している時は描画モードで、青い筋が入った消しゴムでは消しゴムモードです。消しゴムは2つの画像を使っていて、表示/非表示で制御しています。


中心となるのは「TouchDown」と「Dragged」のです(こちらこちらを参照)。



描画モードでは「DrawLine」と「DrowPoint」を使い、消しゴムモードでは「DrawCircle」でキャンバスの色に戻しています。


 

2015年08月19日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(14)【改訂】


今回は直線や円をクリック(タッチ)&ドラッグにより、自由に描画するテストアプリです。



テストアプリを起動した直後のUIがこちらです。



直線は始点でクリック後ドローで終点を指定します。その間、始点と現在ドラッグ中のポイントの間に線を維持します。円では中心と半径を指定します。図形(円)を描いた所がこちら



実際の様子はこちらの動画で確認できます。




これを実現している「Blocks」はこちらこちらです。


色選択や直線・円の図形選択のボタンに対するイヴェント取り込みは描画指定の情報を変更するだけです。

中心となるのは、「TouchDown」・「TouchUp」や「Dragged」です(こちらを参照)。


「TouchDown」では始点のポイントを保存して、「TouchUp」でその時点のポイントを終点として直線又は円を描画します。その際円の半径は始点と終点から長さを計算しています。

「Dragged」では、ドラッグ中の現在位置を得られるのでそれを終点として上と同じ処理をしています。



【改訂】 2015年08月20日 02:20 画像の設定修正


 

2015年08月18日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(13)


今回はキャンバス(Canvas)上で円図形をSin曲線に沿って動くようにするテストアプリです。



テストアプリを起動した直後のUIはこちら



「Start」ボタンで動きだして「Stop」ボタンで一時停止します。「Start」ボタンで再開します(こちらを参照)。




実際の様子はこちらの動画で確認できます。




これを実現している「Blocks」はこちらです。


イヴェントの取り込みの中心は「Clock」です。描画は重ね書きになるので、「Timer」で取り込む毎に全てクリアして中心軸の線と円を描きます。「Start」ボタンと「Stop」ボタンで動作フラッグをコントロールしています。


 

2015年08月17日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(12)


今回からキャンバス(Canvas)に図形を描いていくテストアプリです。キャンバスは新しいHTML5から導入されました。スクリプトとも対応しています。



テストアプリを起動した直後のUIはこちら



「描画」ボタンをクリック(タッチ)する毎にテキストを含む図形を追加表示します(こちらを参照)。




実際の様子はこちらの動画で確認できます。




これを実現している「Blocks」はこちらこちらこちらです。




取り込むイヴェントは1つのボタンだけなのと、単純な流れですが表示する図形の数が多くなっているので、大きくなっています。ボタンを押す毎に増加するカウンターの数により、テキスト・円・点・円周・直線・斜めテキストという順で図形を描き、図形各々で若干"Properties"を変えています。



各図形の描画には各々ライブラリーがあり(こちらを参照)、ほぼ決め打ちの指定です。


ただ、タイトルとなっている最初のテキストでは、キャンバスの幅を取得して表示する位置を計算しています。


 

2015年08月16日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(11)


今回はボタンをタッチ(クリック)している間だけボタンに関連した画像と説明文を表示するテストアプリです。よくある使い方としてマウスをボタンに乗せると、ボタンを強調したり簡単な説明を表示するなどといった使い方をしますが、現状の「App Inventor 2」はβ版である状態からか、「GotFocus」と「LostFocus」が使える状態にはありません。そこで「TouchDown」と「TouchUp」を使います。



テストアプリを起動した直後のUIはこちら



ボタン「M51」(Button1)をタッチ(クリック)した状態での表示がこちらです。




実際の様子はこちらの動画で確認できます。




これを実現している「Blocks」はこちらです。



取り込むイヴェントは、ボタンの「TouchDown」でタッチしたタイミングを、ボタンの「TouchUp」でタッチを止めたタイミングを各々取得します(こちらを参照)。


「TouchDown」の処理では必要な画像と説明文の表示指定をし、「TouchUp」の処理では必要な画像と説明文の非表示指定にします。


 

2015年08月15日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(10)


今回は2つの「Clock」を別のインターバルで動かすテストアプリです。実際に1つのクロック「Clock1」では10秒毎に画像「Image1」の表示と非表示を繰り返し、クロック「Clock2」では3秒毎に画像「Image2」の表示と非表示を繰り返します。クロック「Clock1」に対応して残り秒数をカウントダウン表示します。テストアプリのUIはこちら



実際の様子はこちらの動画で確認できます。




これを実現する「Blocks」はこちらです。



時間の取り込みを「Clock」の「Timer」で行う事はこれまでと同じです(こちらを参照)。


2つのクロックには別のインターバルを初期設定しています。取り込んだタイミングによって表示と非表示を画像「Image」に対してダイナミックに指定します。従って、2つの画像の表示組合せは4パターンになります。


 

2015年08月14日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(9)


今回は時間で発生するイヴェントを使って写真を一定時間で順番に見せていくアルバムを作ってみます。

テストアプリでは10秒毎に4枚の画像を順番に表示します。その際に画像を変更するまでの時間もカウントダウンする様に表示ます。
UIはこちらです。



実際の様子はこちらの動画で確認できます。




これを実現する「Blocks」はこちらです。



時間の取り込みは「Clock」の「Timer」で行います(こちらを参照)。


1回毎にカウントダウンしていき、0になった所で順番に画像の表示/非表示を行います。


 

2015年08月12日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(8)


今回は日付や時刻について、時間の取得や管理、時間で発生するイヴェントを扱います。

テストアプリの起動直後のUIはこちらです。




最初から現在の日付と時刻を表示します。現在時刻は秒毎に進んでいきます。「日付の設定」ボタンで日付を、「時間の設定」ボタンで下部に画像を表示する時刻を指定します(こちらを参照)。


何れもこちらの様な別ページで行います。


時間になるとこちらの様に表示し、1分が過ぎると画像は表示しなくなります。


アプリのスペックとしては「日付の設定」をする意味はなく、「DatePicker」を使ってみただけです・・・



実際の様子はこちらの動画で確認できます。




さて、「Blocks」はこちらこちらです。





日付の表示はアプリ立ち上げ時に現在の日付・時間を取得して(「Clock」の「Now」)、年・月・日を別々に取得して生成します(こちらを参照)。


一部機能の表示ができていません・・・


「日付の設定」ボタンで「DatePicker」のイヴェントは「AfterDatePicker」で取り込みます(こちらを参照)。


「TimePicker」でも同様です。



現在時刻を秒毎に進めていくのは、「Clock」の「Timer」で一定インターバル毎に取り込みます(こちらを参照)。


インターバルは「Clock」の初期設定で(デフォルトで1秒)設定しています。結果として1秒毎に時刻を変える事ができます。

更に、設定した時間の間(1分間)だけ画像を表示する処理を確認・実施しています。変数は時刻の設定が有効であるかの状態を「SettingFlag」で、実際に画像を表示している状態を「VisibleFlag」で使っています。


 

2015年08月11日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(7)


今回はデバイス内の画像から画像を選択・表示し、スライダーによる画像を拡大・縮小するテストアプリです。デバイス内の画像を選択する「ImagePicker」とスライダを操作する「Slider」を扱います。



テストアプリの起動直後のUIはこちらです。


この時点でイメージ「Images1」の表示サイズを200×135としていますが、「Slider1」やラベル「Label2」と共に表示していません。


「ファイルの選択」ボタンをクリックすると、こちらの様にローカルフォルダにある画像を表示します。


1つのファイルをサムネイルから選択するとこちらの様にスライダを付けて表示します。




実際の様子はこちらの動画で確認できます。


原因は分かりませんが、現時点で一度ファイルにアクセスすると、そのファイルを二重に表示します・・・



さて、「Blocks」はこちらです。




ImagePickerのクリックをイヴェントとして取得するのは「AfterPicker」です(こちらを参照)。


事前に設定していたフォルダはなく(「Image」でブランク表示)、選択したファイルのフォルダ及びファイル名が「Selection」で取得できます(こちらを参照)。


取得した情報は表示するラベル「Label1」・「Label2」及び画像を表示するエリアの"Properties"「Picture」に設定します。更に初期状態では非表示になっていた画像やスライダを表示する様にします(テキストの色も変更しています)。



選択した画像を表示している画面でスライダを移動する事によって生じるイヴェントは、「PositionChanged」で取得します(こちらを参照)。


スライダは最小が20で最大が50、標準サイズを40としています。スライダを動かす事により、変数(Variabule)「thumbPosition」にその時点の数値が得られます。


画像の表示エリアのサイズを使って(本来はアプリの中でダイナミックに選ばれる画像のサイズを取得したいのですが、画像を初期設定していないと得られません・・・)、縮小・拡大する画像エリアのサイズ指定をしています。


 

2015年08月10日

ブロックを組立てていくビジュアル・プログラミング言語「App Inventor 2」を使ってみる(6)


今回はリストから選択動作を実現する「ListPicker」と「Spinner」を扱います。また、表示項目の表示/非表示をプログラム側から操作します。



テストアプリの起動直後のUIはこちらです。


「ListPicker」と「Spinner」を組み込んでいます。表示項目の中で「Label2」と「Label3」は初期設定で非表示としています。



「ListPicker」の「Properties」で「ElementsFromString」として、「Tokyo,Kyouto,Osaka,Nagoya,Hiroshima,Hakata,Sendai,Sapporo」の様に","で区切るリストを指定しています。「ListPicker」のテキスト部分をクリックすると、別画面としてこちらの様にリスト表示します。


選択した都市名をそれまで非表示にしていた「Label2」の部分に表示します。



「Spinner」の下向き三角▼をクリックすると、「ListPicker」と同様に","で区切るリストを(日本語で)指定しているので、こちらの様に表示します。



選択した都市によって応答内容に違いを出しています。[大阪」と「京都」については「奈良」も推奨し(こちら)、そうでなければこちらの様に応答します。





実際のアプリの動作はこちらの動画を参照してください。




「Blocks」はこちらです。




「ListPicker」については「AfterPicking」でイヴェントを取り込みます(こちらを参照)。



選択した都市名は「Selection」で受け取ります(こちらを参照)。



「Label2」を非表示から表示にするだけでなく、フォントのサイズと文字カラーも「Properties」を変更する事で、大きくしたり赤色にしています(こちらを参照)。




「Spinner」については「AfterSelecting」でイヴェントを取り込みます。選択した都市名を「Selection」で受け取り、条件判断をしてメッセージを作っています(こちらを参照)。