♦C#プログラミング入門♦
その1 / その2 / その3


♦WEBプログラミング入門♦

☆ジャバスクリプト講座
その1 / その2 / その3 / その4 / その5 / その6 / その7 / その8 / その9 / その10
その11 / その12 / その13 / その14 / その15

☆HTML講座
その1 / その2 / その3 / その4 / その5

☆CSS講座
その1 / その2 / その3 / その4 / その5 / おまけ

◆そんな私が作成した人気サービス
脱出サスペンスその1「浴室」 / アイフォンアプリプレス / ツイッター++
1 | 2 | 3 | 4 | 5 |最初 次ページ >>
2016年09月20日(火) 14時28分20秒

操作間違えました

テーマ:アプリ

タップスポットストアに出てしまいました。

リリース日付決めても強制的にリリースされるんですね。覚えておこう。

 

アップストア

https://itunes.apple.com/jp/app/tappusupotto1/id1153786014?mt=8

 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)
2016年09月20日(火) 02時24分38秒

「タップスポット」アップル審査終了です!

テーマ:アプリ

久しぶりのアプリリリースで色々と手間取ってしまいましたがようやくアップルの審査終了しました。

 

審査自体はかなりスピーディーになっていて驚きました。しかしながらその分厳しい審査でした。

 

 

★審査による今回の指摘

ープレゼントの内容について詳細な説明を要求

ー利用規約(EULA)の追加とユーザーに条件について同意させる仕組みの導入

ー不快コンテンツや不快ユーザーの一般ユーザーによるブロッキング機能の追加

ーユーザーコンテンツの厳正な管理

 

 

タップスポットはユーザーが写真等を投稿できるので一般的なゲームアプリよりも厳正な運営が求められるようで、仕組みや法的にガチガチにする必要があるようです。個人的にはどうせ誰も投稿どころかダウンロードもされないって(笑)と思っていてもアップル側には責任がありますから仕方ないですよね。

 

とても勉強になりましたし、デザインをなるべく壊さないようにブロック機能を追加する作業はちょっと楽しかったです。

 

今回の審査担当の人がなんだかフレンドリーというか人間味がある人だったのが新鮮で気持ちよかったです。前にリリースしたアプリのときはぶっきらぼうで冷淡なイメージだったので・・・。

 

審査の人に

 

Thank you

 

とか言われたの初めてかもしれません。

 

 

いつも「Information Needed」レビュー番号ー内容みたいなボットのようなメールばかりだったので・・・。

 

 

何はともあれ水曜日の16時にリリースします!

興味がある方は公序良俗を守って遊んでみてくださいね!

 

次のアプリ脱出サスペンスその2もそこそこいい感じです。

こちらもお楽しみに!

 

 

 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)
2016年09月11日(日) 23時47分15秒

スイフト(swift)で効率的にアニメーションを表現する方法?

テーマ:アプリ

とりあえず自分の中で結論が出たのでメモしておきます。

 

 

スイフトと言うかアップル製の言語ではゲームで使えそうなアニメーションを作るときはanimateKeyframesWithDurationとその中で使うaddKeyframeWithRelativeStartTimeを利用するのが良いでしょう。

 

これらはキーフレームアニメーションと言って指定した時間内で時間を分割し、順番に連続したアニメーションを動かすことが出来ます。

 

他のアニメーションは1つの動作しか行えないため状況によっては扱い難かったのでキーフレームを選びました

 

基本の形は以下の様な感じ

 

let duration = 10.0 //全体を通した時間(NSTimeInterval型)

let delay = 0.0 //遅延時間(NSTimeInterval型)

let options = .CalculationModeLinear //オプション、いろんなオプションがある

 

UIView.animateKeyframesWithDuration(duration, delay: delay, options: options, animations: {

            UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1/10, animations: {

                //0秒から1/10秒(つまり1秒)かけてビューの透明度を1にする

                somethingView.alpha = 1

            })

            UIView.addKeyframeWithRelativeStartTime(1/10, relativeDuration: 5/10, animations: {

               //1/10(つまり1秒目)から5/10秒(つまり5秒)間何もしない

            })

            UIView.addKeyframeWithRelativeStartTime(6/10, relativeDuration: 4/10, animations: {

                //6/10秒(つまり6秒目)から4/10秒(つまり4秒)かけてビューの透明度を0にする

                somethingView.alpha = 0

            })

            }, completion: { finished in

                // 最後に実行する処理

                somethingView.removeFromSuperview() //ビューを削除する

            }

 )

 

上記のように記述すれば連続したアニメーションを順に実行することが出来ます。しかしながら透明度の変更、回転、移動以外は出来ないようで音を鳴らす処理だとかテキストを変更する処理を間に挟んでも無視されすべて0秒目から実行されてしまいます。

 

そこでなにかよい方法は無いかと思い考えたところマルチスレッド機能を使って意図的に遅延実行させてみることにしました

 

具体的には以下のように

 

var seconds: Double = 5

var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC)))

dispatch_after(dispatchTime, dispatch_get_main_queue(), {

     //5秒目に行う処理(例えば音を鳴らす処理などを追加する)※コードは割愛

})

seconds = 10

dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC)))

dispatch_after(dispatchTime, dispatch_get_main_queue(), {

     //10秒目に行う処理(例えばテキストの表示内容を変更する)※コードは割愛

})

 

 

こんな形でコードを書けばアニメーションに合わせてテキストを変更したり、音を鳴らしたりといった表現ができるようになります。ただもしかして微妙に同期がずれて音再生等の処理がズレてしまうかもしれないのでまだまだ改善の余地があるかもしれません。

 

ちなみに私の作った1作目の脱出ゲームの冒頭アニメーションはsleep()とアニメーションと音声再生を組み合わせて作っています。こちらは1つずつ処理を実行するので同期がずれること(音ズレやテキスト変更ズレ)は無いように感じますが全然スマートさが感じられません。

 

しかしスイフト、もう少しなんかなぁ

 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)
2016年09月10日(土) 10時58分44秒

Optional型とかアンラップとか

テーマ:アプリ

スイフトの不満を今日も書いていきます!おそらく次のアプリが完成するまで備忘録を兼ねて更新頻度上がるかもしれません

 

さて昨日はアニメーションを効率的に書く方法を試行錯誤してました。その際、時間を測りたかったのでNSTimer(これもセレクタで指定なので不便)を使ってアニメーション処理中の経過時間を表示する仕組みを作ろうとしていたのですが、ここでハマりました。

 

ラベルのテキスト(label.text)を数値型に変換しなければならないのですが、これがとてつもなく厄介でした

 

objective-cなら

 

 

(int)[label.text integerValue]

 

 

と書けば問答無用でラベルのテキストを数値型(int)に変換してくれるにもかかわらずスイフトの場合はOptional型をアンラップしなければ計算も出来ず数値にも変換されませんでした。しかも自分の環境はswift1.1でweb上によくあるswift2.0以降のメソッドは使えないため余計にこんがらがってしまいました。

 

結局

 

 

var stringNumber:String = label.text! //アンラップ

var numberFromString = stringNumber.toInt()! //アンラップ

 

 

こんな感じにすることによってもともとOptional型のlabel.textをアンラップすることによって普通の数値として扱うことが出来ました

 

ところでOptional型やアンラップってなんですか?何回説明読んでもなんのためにあるのかわからないのですが。なんでnilやNullを認めちゃダメなの?それからletって必要ですか?varだけで良くない?ジャバスクリプトが恋しい

 

 

アニメーションの効率的(っぽい)書き方についてはまた今度にします。Cocos2DやUnityはあえて使ってません。Unityは次の次の次のアプリくらいから使う予定です。

 

 

 

(追記)

UIViewのframe指定用の数値がただのfloatでは受け付けなくなってる!CGFloat型にしないとうまく処理されませんでした。Objective-cから退化してませんか?それは流石に言いすぎか。

 

(追記2)

ー Optional型 ー 

nilを受け付けることができる型

計算とか変換とか出来ない処理が多い

ラップされた状態

「?」はOptional型を表す

 

ー アンラップ ー

Optional型を取り除くこと「!」とかが有名

変換や計算もできるようになる

nilは受け付けない(nilは0扱いでいいのに…)

 

ー let ー

定数

なぜかswiftでは良く目にする

#defineより使いにくく厳格且つ気軽

 

 

いいね!した人  |  コメント(0)  |  リブログ(0)
2016年09月09日(金) 06時40分47秒

swiftでも同じなのか・・・?jQueryのselectorはあんなに便利なのに・・・

テーマ:アプリ

次のアプリはスイフトを使って開発しようと思っていたので現在コツコツ調べているのですが、どうやらやっぱりボタンはセレクターを使う方法から変わってないようですね。

 

アップルの言語(Objective-cとswift)ではボタンを押した時の処理にセレクターという仕組みを使うのですがこれが非常に使いにくいです。

 

別の言語(ジャバスクリプト、VisualC#、VB)ではボタンを押すときに変数(引数)を普通の関数と同じように渡すことができるのですがなぜかアップルの言語はそれが出来ないんですよね。

 

アップルはリストを作ってそれぞれにボタンを割り振りたい時一つ一つ毎にメソッドを書くことを想定しているのでしょうか?それとも各ボタンの処理の振り分けはタグを使うことを前提にしているのでしょうか?

 

かなり新しい言語ということで期待していたのですがジャバスクリプトの足元にも及ばない古い設計のようで非常に落胆しています。ボタン押したらメソッド実行!が最もシンプルなのに・・・

 

もしかしたら解決方法があるのかもしれませんが検索してすぐ出てこない時点で諦めています。誰か知恵をください。スタックオーバーフローにも公式ドキュメントでも見つけられなかったから無理か。はー

 

 

 

 

いいね!した人  |  コメント(0)  |  リブログ(0)
1 | 2 | 3 | 4 | 5 |最初 次ページ >>

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。