HTML5テクニカルノート
EaselJS NEXT: StageGL()コンストラクタ
- ID: FN1705010
- Technique: HTML5 / JavaScript
- Library: EaselJS NEXT
StageGL
インスタンスは、WebGLに最適化された表示リストの最上位となるContainer
オブジェクトです。これまでのStage
に替えて、基本的に同じように使えます。ただし、WebGLの仕様にもとづく注意点はあります。
StageGL()コンストラクタ | |
文法 | StageGL(canvas: HTMLCanvasElement | String | Object, options: Object): StageGL |
概要 |
WebGLで描くStageGLインスタンスをつくって返す。 |
引数 |
canvas - options - つぎのようなオプションのプロパティを定めたオブジェクト。このオブジェクトそのものを含めて、いずれも省略して構わない。ブラウザによって対応しないオプションもある。
|
説明
StageGL
インスタンスは、表示リストの最上位につくられるWebGLに最適化されたContainer
オブジェクトです。Ticker.tick
イベントでStageGL()
コンストラクタに渡した第1引数のCanvasオブジェクトが描き直されます。ただし、WebGLと互換性のない表示オブジェクトは描かれません。デバイスやブラウザがWebGLに対応していないときは、自動的に2Dレンダリングコンテキスト(CanvasRenderingContext2D
)に描画されます。
-
StageGLの描画について確認しておくこと
Shape
とShadow
、およびText
インスタンスは、表示リストに加えただけでは表示されない。- 前記のWebGLで表示できないオブジェクトは、いずれもキャッシュすることにより描画される(
DisplayObject.cache()
メソッド参照)。 Image
オブジェクトはWebGLのテクスチャとしてラップされる。グラフィックスカードは、扱えるテクスチャの数にかぎりがある。数が多すぎると、処理の速さは大きく損なわれる。- キャッシュひとつひとつがテクスチャとして数えられる。
SpriteSheet
やSpriteSheetBuilder
を使うことは、テクスチャの数が減らすうえで望ましい。 - イメージノード(DOMの
<Image>
要素または<canvas>
要素)を複数のStageGL
インスタンスで使うときは要素を複製しなければならない。そうしないと、GPUがテクスチャを読み込んだり参照するときに問題が生じる。 StageGL
インスタンスがつくられたあと、<canvas>
要素の大きさを変えたとき表示に正しく反映されない問題を避けるには、StageGL.updateViewport()
メソッドを呼び出す。メモリのWebGLコンテキストのサイズが改められる。- テクスチャメモリを手動で厳密に管理すれば最高のパフォーマンスが得られる。けれど、デフォルトでも自動で適切に管理される(
StageGL.releaseTexture()
メソッド参照)。
例
つぎのコードは、StageGL
インスタンスの子にBitmap
オブジェクトを加え、Ticker.tick
イベントで水平に動かします。
var stage = new createjs.StageGL('myCanvas'); var image = new createjs.Bitmap('image.png'); stage.addChild(image); createjs.Ticker.addEventListener('tick', handleTick); function handleTick(eventObject) { image.x += 10; stage.update(); }
作成者: 野中文雄
作成日: 2016年5月25日
Copyright © 2001-2017 Fumio Nonaka. All rights reserved.