incontextof的使用
参考贴 by resty:http://www.doujingame.cn/bbs/forum.php?mod=viewthread&tid=153
简单的说就是从外部载入一个函数替换掉原版。
因为这样的做法不需要修改system文件夹,属于较不容易出错也更好升级的系统改造方式。
例如:
//将mainwindow里的同名函数替换掉
//-------------------------------------------------------------------------------------------------
kag.saveBookMark=function(num, savehist = true)
{
// 栞番号 num に栞を保存する
if(readOnlyMode) return false;
if(bookMarkProtectedStates[num]) return false;
var ret = saveBookMarkToFile(getBookMarkFileNameAtNum(num), savehist);
if(ret)
{
getBookMarkInfoFromData(pcflags, num);
//保存最近历史记录
SaveExtraInfo(num);
}
return ret;
} incontextof kag;
简单的说就是从外部载入一个函数替换掉原版。
因为这样的做法不需要修改system文件夹,属于较不容易出错也更好升级的系统改造方式。
例如:
//将mainwindow里的同名函数替换掉
//-------------------------------------------------------------------------------------------------
kag.saveBookMark=function(num, savehist = true)
{
// 栞番号 num に栞を保存する
if(readOnlyMode) return false;
if(bookMarkProtectedStates[num]) return false;
var ret = saveBookMarkToFile(getBookMarkFileNameAtNum(num), savehist);
if(ret)
{
getBookMarkInfoFromData(pcflags, num);
//保存最近历史记录
SaveExtraInfo(num);
}
return ret;
} incontextof kag;
SaveExtraInfo
function SaveExtraInfo(num)
{
//记录历史记录
if (sf.历史!=void && num < 999)
{
sf.历史[num] = kag.historyLayer.data[kag.historyLayer.dataPos-1];
Debug.message("记录历史记录");
}
//记录最近档案名
if (num < 999)
{
sf.最近档案= num ;
Debug.message("最近保存档案名刷新");
}
kag.saveSystemVariables();
}
{
//记录历史记录
if (sf.历史!=void && num < 999)
{
sf.历史[num] = kag.historyLayer.data[kag.historyLayer.dataPos-1];
Debug.message("记录历史记录");
}
//记录最近档案名
if (num < 999)
{
sf.最近档案= num ;
Debug.message("最近保存档案名刷新");
}
kag.saveSystemVariables();
}