« やっぱり、BCBがなんかおかしい | メイン | BRenderの拡張をしようとする »

2004年09月10日

吉里吉里2/KAG3ムービー拡張日誌:: エラーウィンドウ大量発生バグの解決

    

バグは、
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
Total : Today : Yesterday : なかのひと