« 吉里吉里Z β1 バイナリ | メイン | 吉里吉里Z β2 バイナリ »

2013年11月01日

吉里吉里Z 開発:: 非同期読込み

    

非同期読込みは Bitmap.loadAsync(filename) と Bitmap.onLoaded(meta,async,error,message) を使って行う。
サンプルは GitHub のここ にある。

loadAsync で読込みを要求し、onLoaded で読込み完了を受ける。
非同期読込み中かどうかは Bitmap.loading で判定できる。
非同期読込み中は Bitmap の他のメンバへアクセスすると例外が発生する。
loadAsync の引数 filename は拡張子を含んだものとなり、省略できる Layer.loadImages とは異なるので注意。

onLoaded で受け取る各値 (meta,async,error,message) はそれぞれ以下の通り。
meta : Layer.loadImages の戻り値で受け取れるものと同じ。タグ情報の辞書配列。
async : 非同期で読み込まれたものかどうか。キャッシュに入っていた場合は、読込み要求した後そのまま onLoaded で返ってくる。
error : 読込みエラーが発生したかどうか。
message : エラーメッセージ。エラーが発生した場合、エラーメッセージが渡される。

読み込んだ画像は Layer.copyFromBitmapToMainImage(Bitmap) によって、Bitmap から Layer にコピーできる。
コピーと言っても、変更されるまでは共有されているので、一瞬で終わる。
読込み処理は非同期であるため、読込みが完了した時に、その画像を渡す Layer が既に無効化されている可能性がある。
onLoaded で他のオブジェクトへアクセスする場合は、無効化されていないか確認した方が良い。
もしくは、onLoaded が完了するまで無効化されないようにする必要がある。



投稿者 Takenori : 2013年11月01日 04:50




comments powered by Disqus
Total : Today : Yesterday : なかのひと