1.6」で、Starlingの新たなバージョン1.6の公開が知らされました。これまでと同じ改善や最適化だけでなく、Adobeの最新のStage3D技術を生かした新たな機能も加えられました。この記事にもとづいて、新たな中身についてご説明します。Sprite3D最近の記事でお知らせしたとおり、Starlingオブジェクトを3次元空間で変換できます。この機能を使えば、素晴らしい効果が与えられます。Feathersのシーンを3次元で切替えたり、ゲームでカードの裏を見たりといったことです。新しいSprite3Dクラスのインスタンスをつくったら、これまでどおりDisplayObjectContainer.addChild()メソッドで表示リストに加えます。Sprite3D.rotationXやSprite3D.rotationYあるいはSprite3D.rotationZといった3次元のプロパティを変えればよいのです。1.6とSprite3D」の01「Sprite3D」に掲げた英語ビデオをご覧ください)。図001■神経衰弱ゲームまた最近になって、3次元の遠近法の設定が変えられるつぎの3つのプロパティをStarlingのStageクラスに備えました(図002参照)。遠近法の設定を変えるStageクラスのプロパティfieldOfView:Number視野角を0からπまでのラジアン値で示す。focalLength:Number投影面と視点との間の焦点距離を示す。projectionOffset:Pointステージ中央からの視点のずれ、つまり消失点を示すベクトル。図002■3次元における焦点距離と視野角および消失点さらに、DisplayObjectクラスにも、いくつかの新たなメソッドやプロパティが加わっています(たとえば、DisplayObject.local3DToGlobal()やDisplayObject.globalToLocal3D())。Wiki「Sprite3D」(英文)をお読みください。素材管理の強化プレーヤーがゲームを起ち上げたら、すぐに始めたいものです。その前にすべてのテクスチャやサウンドを読込まなければなりません。これは時間のかかる処理です。StarlingのAssetManagerを使っている場合、このリリースで負荷が大幅に減ります。AssetManagerは、複数の素材を並行して読込めるようになりました。その結果、処理は大幅に速くなります(素材の読込みがディスクかネットワークかを問いません)。パフォーマンスは、これまでの2倍以上でしょう。ひとつ小さな改善として、さまざまな設定のテクスチャの読込みが、つぎのように簡単になります。Context3DTextureFormat.BGRA_PACKED;assets.enqueue(appDir.resolvePath("textures/16bit"));assets.loadQueue(...);AssetManager.enqueue()メソッドは、AssetManagerに素材を加えたときの設定を覚えます。AssetManager.loadQueue()メソッドが、その設定にもとづいてそれぞれのテクスチャをつくるのです。キューの処理に問題が起こると、AssetManager.ioError(定数Event.IO_ERROR)やAssetManager.parseError(定数Event.PARSE_ERROR)、あるいはAssetManager.securityError(定数Event.SECURITY_ERROR)といったイベントが送られます。これにより、問題を正しく扱うことができます。フィルタの入れ子とRenderTexturesの改善これまでのStage3Dは、RenderTexturesオブジェクトやフィルタを使いやすくしづらい制約を強いてきました。15から、その制限がついになくなりました。そこで、つぎのような変更が加えられています。フィルタのかかったオブジェクトを含む親コンテナにフィルタが加えられる。フィルタのかかったオブジェクトをRenderTextureオブジェクトに描画できる。persistentに定められたRenderTexturesオブジェクトもひとつのバッファで扱える。そのため、費やされるメモリは50%で済む。そのためには、RenderTexture.optimizePersistentBuffers()メソッドにtrueを渡して呼出しておく。この機能を使うにはひとつ注意がいります。iOSとデスクトップは問題ないものの、Androidでは必ずしもすべてに対応しません。古いデバイスでは、この機能を使ったときパフォーマンスが下がったり、表示に問題がでる場合もあります。残念ながら、問題のあるデバイスのリストはまだありません。報告は今のところ1件だけのようです。影響の大きい問題ではないかもしれません。不安がある場合には、新たな機能は最近のハードウェアで使うのがよいでしょう。4.3以降、あるいはstandardプロファイルをサポートしていることです。Changelog」でお確かめください。おもな変更はつぎのとおりです。新機能TextFieldはTrueTypeフォントのHTMLテキストをサポート。Buttonクラスがテクスチャとして重なり(Button.overState)と無効(Button.disabledState)の場合をサポート。Starling.stopWithFatalError()メソッドでユーザーに深刻なエラーを知らせられる。MovieClip.soundTransformプロパティが備わった。Sprite.flatten()メソッドの引数にignoreChildOrderが与えられた。子インスタンスの重ね順は問わないとき、trueを渡すと最適化される。IDEA用のモジュールとプロジェクトが加えられた。TravisCI用のビルドスクリプトが加わった。最適化BitmapFontをつくるとき内部的に使われているオブジェクトがすべてプールされる。TextureAtlasはすべてのSubTextureをキャッシュする。TextureAtlasは使えるテクスチャ名をキャッシュする。AssetManager.loadQueue()メソッドはフォントとアトラスのXMLを分けて処理する。これにより読込みがスムーズになる。多くのバグが修正されました。Download」のページからダウンロードできます。GitHubをお使いの方は「Gamua/Starling-Framework」の「v1.6」から手に入れることもできます。