FlashBuilder4.7 macで、iOSアプリを書き出す(AIR for iOS 設定編その1)

会社でとある開発案件に携わっていて、土日もなく働いていたのでなかなか更新もできなかったのだが、案件自体が頓挫して締まったので、少し時間ができた。
なので、これまでやりたくてもなかなかできなかったスマホアプリの開発を、プライベートで始めようかと思う。

普段はActionScriptを使用しているので、まず最初に手をつけたのはFlashBuilder4.7からiOSアプリを書き出す、ということだった。
並行して、Unityやcocos2d-xも触っていくつもりなのだが、とりあえず一番最初はAIRから入りたいと思う。

で、実際やってみて思ったのは、設定さえ終えてしまえば、書き出し自体はPC向けのファイルとそんなに変わらない。
逆に言うと、開発者権限などの設定が意外と面倒くさいのだ。
なので、まずは設定周りを備忘録として描いておきたいと思う。
ちなみに、開発環境はMacBookAir2012Mid 11inch メモリ8GB ストレージ128GB。
Windowsでも設定はできないことはないみたいだけど、かなりややこしいようなので、素直にMacで開発したほうがいいと思う。

大まかな手順としては

  1. Apple Developerに開発者登録を行う。
  2. 登録したIDから、開発証明書(「certSigningRequest」ファイル)を生成して書き出す(キーチェーンアクセスから)
  3. 2で書きだした証明書ファイルを、appleの開発者サイトに送信して、「iOS Certificates」に登録する。
  4. 登録した「iOS Certificates」ファイルをダウンロードして、キーチェーンに登録する。
  5. 登録したファイルから、「p12」ファイルを書き出す。
  6. appleの開発者サイトで、「iOS App IDs」に開発するアプリのIDを、「iOS Provisioning Profiles」にそのアプリのプロビジョニングファイルを新規に生成する。
  7. プロビジョニングファイルをダウンロードする

これだけのプロセスを踏んで、やっと「p12」ファイルと「mobileprovision」ファイルの2つが手に入る。
この2つのファイルがないと、AIR for iOS、使えない。。。

各段階の詳細は、やはり備忘録として追って記載して行くことにする。

TLFテキストを含むswfを外部から読み込んだ場合

TLFテキストを含むswfを外部から読み込んだ場合、読み込み元のswfから、読み込まれた側のswfのタイムラインやオブジェクトにアクセスすることができないケースがある。

http://www.fumiononaka.com/TechNotes/Flash/FN1104003.html

さすが野中先生。大変助かりました。ありがとうございました。
しかし、何というトラップ。。。

Flash Builder4.7での、Workspace内での検索のショートカット

Shift + Command + f だの、Shift + Command + g だの、いろんな情報が出まわってますが、使用している「Flash Builder 4.7 Mac版」においては、Workspace全体を対象とした検索のショートカットは、ctrl + h でした。
こんなことで30分ほどのロスとはね。。。
ショートカットを頻繁に変更するのは辞めていただきたい>Adobe様。

StarlingのSpriteにおける、flattenに関して

starling.display.Spriteに関して

var parentSprite:Sprite = new Sprite();
var childSPrite:Sprite = new Sprite();
parentSprite.addChild(childSprite);
parentSprite.flatten();

としてしまうと、parentSpriteはいかなる状態変更も受け付けなくなる。
childSpriteをremoveChildできなくなって、めっさ慌てた。。。

そしてはてなのカテゴリーが選べなくなってしまったのはなぜだ??

StarlingのMovieClipの、再生完了時のイベント

starling.display.MovieClipのアニメが最後まで再生された段階で

Event.MOVIE_COMPLETED

が配信されると書いてあったのだが、こちらのイベントはすでに使用不能となっている。
代わりに

Event.COMPLETE

こちらのイベントが、アニメの最後でdispatchされている。

http://forum.starling-framework.org/topic/eventmovie_completed-is-no-longer-available

こちらの記事に助けていただきました。ありがとうございます。

StarlingのMovieClipが再生されないケース

2つのSpriteに対して

import starling.display.MovieClip;
var mc:MovieClip;
var mc02:MovieClip;<中略>

spriteA.addChild(mc);
spriteB.addChild(mc02);

とやって、片方は再生されて片方は再生されない、というケースが出た。
原因は不明なのだが、片方のSpriteにはその他も多くの要素を配置していたので、一定数以上の子要素をもつSprite上では、MovieClipの挙動が不安定になるのかもしれない。完全にあてずっぽうの推測だが。。。

<追記>
これも、再生されないmcの親Spriteにflattenを実行していたからだった。。。

mac版FlashBuilderのショートカット

ctrl + Space でコード補完表示って言われて、何度試してもダメで諦めていたんだけど、Spotlightに同じショートカットが割り当てられていてそっちが優先されているのね。
システム環境設定からSpotlightのショートカットを解除したら機能するようになった。

http://d.hatena.ne.jp/abachibi/comment?date=20120417§ion=1334674132#c

こちらの記事に助けていただきました。ありがとうございます。