« やっぱり、BCBがなんかおかしい | メイン | BRenderの拡張をしようとする »
2004年09月10日
吉里吉里2/KAG3ムービー拡張日誌:: エラーウィンドウ大量発生バグの解決
Tweet @jin1016をフォローバグは、
kag.movie.layer1 = null;
としたら、エラーウィンドウが大量発生するというものだった。
で、この部分のコードはレイヤー(LayerIntf.cpp)のassignImagesのところをコピーしてきた。(同じようにレイヤーを引数にとるので)
コードは次のような感じ。
tTJSNI_BaseLayer *src;
tTJSVariantClosure clo = param[0]->AsObjectClosureNoAddRef();
if(clo.Object)
{
if(TJS_FAILED(clo.Object->NativeInstanceSupport(TJS_NIS_GETINSTANCE,
tTJSNC_Layer::ClassID, (iTJSNativeInstance**)&src)))
TVPThrowExceptionMessage(TVPSpecifyLayer);
}
if(!src) TVPThrowExceptionMessage(TVPSpecifyLayer);
_this->AssignImages(src);
で、問題はsrcが初期化されていないこと。
*src = NULL;ってやった方が良さそう。
でも、そうすると下のif(!src)に引っかかって、エクセプション。
なので、(!src)の部分は上のif文の中に入れた。
で、自分のlayer1プロパティを設定するところは以下のような感じ。
tTJSNI_BaseLayer *src = NULL;
tTJSVariantClosure clo = param->AsObjectClosureNoAddRef();
if(clo.Object)
{
if(TJS_FAILED(clo.Object->NativeInstanceSupport(TJS_NIS_GETINSTANCE,
tTJSNC_Layer::ClassID, (iTJSNativeInstance**)&src)))
TVPThrowExceptionMessage(TVPSpecifyLayer);
if(!src) TVPThrowExceptionMessage(TVPSpecifyLayer);
}
_this->SetLayer1(src);
自分のところはこうしたが、レイヤーの方はいいのかな?
まあ、nullが引数であることはないのかも。
自分のところは、設定を解除するのに使っているので必要。
とりあえず、報告かな?
新しいのでは直っているのかもしれないけど。
投稿者 Takenori : 2004年09月10日 04:16
comments powered by Disqus