Camera

このサンプルは www.GPAnimations.com の管理者であるGreg Pgh氏によって作成されたものです.このページではKwikの作品内でデバイスのカメラを使って画像を入れ替える方法について説明いたします.

完成した作品はこのようになります:

https://youtu.be/WR1s0LGGh9w

注意:このデモンストレーションでは第三世代のiPadのカメラで画像の切り替えを行います.他のデバイスでは,カメラの特徴に依存する可能性があります.また,写真を加工したり、複数のページで写真を使用したりする場合,さらに追加の外部ファイルが必要になります.

.psdファイルの大きさが768×1024 サイズなので,iPad miniの新しいKwikプロジェクトを作成しましょう.

グループの作成

パネルレイヤーを開いて,Shiftを押しながら、headとbodyレイヤーを複数選択してください。そして、Project and Pages > Create Groupsをクリックします。

  • Name: guy
  • Members: head, body

グループ名は、guyと名付けました。

Linear Animation

Animations > Linear Animationをクリックしてください。

Linear Animationの名前をguyMoveにし,Groupをguyに設定してください.

  • Group: guy

guyグループを好きなところに移動させて、位置を決めます。また任意のduration(時間)を設定してください.

重要なのはアニメーションをguy groupに設定することです.あるグループを任意の場所に移動させるアニメーションです。

写真フォルダーから画像を挿入するためのボタン

Layersパネルから,btnレイヤーを選択してください.次に、Interactions > Add buttonをクリックしてください。

button actionの名前をmyBtnにして,Code > External Codeを選択してください.

  • Name: myBtn
  • Code > External Code
    • Browse for ipad3camera.lua

build.settings

iOS上でカメラを使用するために,plistテーブルのbuild.setteingsにあるkeys/descriptionsを追加しないといけません.ユーザーがカメラを使用した時に,システムがユーザーに対してカメラを使用することを知らせる警告が画面に表示されます.

settings =
{
    iphone =
    {
        plist =
        {
            NSPhotoLibraryUsageDescription = "This app would like to access the photo library.",
        },
    },
}

https://docs.coronalabs.com/api/library/media/selectPhoto.html

build.settingsが上書きを回避する

パブリッシュするたびに,bulid.settingsはアップデートされまず、変更された情報が失われてしまいます.設定(settings) > Publish タブを開き、ページのLuaファイルのみを出力するようにします。下記のチェックボックスを有効にしてください。

  • Publish only pages \<num> lua (do not export main.lua etc)

これで設定は完了です

別の方法として、プロジェクトのフォルダにある tmplt/build.settings ファイルを編集して、plist を追加してください。

ipad3camera.lua

インポートした外部コードについて説明します。ipad3camera.luaをテキストエディタから開くと、以下のようなコードを見ることができます.

local onComplete = function(event)
    -- Create local variable named photo
    local photo = event.target
    -- Place photo over the body
    photo.x = 745;
    photo.y = 380;
    -- Scale down the photo to match the body scale
    -- Note that 0.07 scale is ideal for iPad 3rd Generation camera
    -- Other cameras may need different scaling
    photo.xScale = 0.07;
    photo.yScale = 0.07;
    -- Remove the head image placeholder from the group named “guy”
    guy:remove(head);
    -- Insert the newly taken picture in place of the head
    guy:insert(photo);
end

    -- If a camera exists on the device, start camera function
if media.hasSource(media.PhotoLibrary) then
     media.selectPhoto( { mediaSource=media.PhotoLibrary, listener=onComplete } )
else
    -- If camera doens’t exist, show alert popup
    native.showAlert( “Corona”, “This device does not have a camera.”, { “OK” } )
end

これらにはオプションのパラメータと,位置を特定するpermittedArrowDirectionsと選択した写真をポップアップするための動作があります.これらのパラメータはiPadのみ使用できます.

 media.selectPhoto( { mediaSource=media.PhotoLibrary, 
        origin = button.contentBounds, 
        permittedArrowDirections = { "right" },
        listener=onComplete } )

このコードは使用するデバイスにカメラがあるかどうかをチェックするものです.このコードがない場合,ポップアップボックスが現れカメラがないことをユーザに伝えます.もしカメラがない場合,カメラのスクリーンが表示されて,代わりとなる画像を選択させるダイアログが開きます。

重要な部分は以下のところです:

photo.xScale = 0.07;
photo.yScale = 0.07;

"0.07"というのは第三世代のiPadのカメラを使う時にベストなサイズを指定する数値です.しかし,Corona SDK Simulatorを使ってテストする場合には,"1"と設定したほうがいいでしょう.あなたのデバイスやアプリケーションに合わせて数値を調整する必要があります.

もしスケールを変更する場合には,ipad3camera.luaの数値を変えて変更するだけです.Kwikは、プロジェクトをパブリッシュする時に,ipad3camera.luaのファイルを読み込みます。

Corona SDK Simulatorでmain.luaを開きます.少年がスクリーン上を動き,その少年をクリックするとカメラのオプションが開くのを確認してください.Macのウェブカメラを使っている場合,以下のようなウィンドウが表示されます.

デフォルトの画像を使うかウェブカメラから新しい写真を使うか選択することができます.しかし,どちらを選んでもその画像はとても小さいものになります.

これはiPad第三世代のためにスケールを0.07に設定したためです.iOS向けにアプリケーションをビルドして第三世代のiPadでテストすると,このチュートリアルの最初で流したような結果になるでしょう.

iPad 3rd generation

photo.xScale = 0.07;
photo.yScale = 0.07;

シュミレーターで正しいサイズの画像を確認したい場合は,ipad3camera.luaを開いて以下のように変更してください:

Corona Simulator

photo.xScale = 1;
photo.yScale = 1;

ipad3camera.luaの変更を保存して,Kwikプロジェクトを再度パブリッシュしてください.

以上、Kwikでカメラを使うサンプルでした。

results matching ""

    No results matching ""