DelphiX中的DXSprite单元中涉及到修改
1:FGroupNumber没有任何地方赋值的,因此,对FGroupNumber进行赋值,最佳位置是:TSprite.SetGroupNumber过程,因此,下面代码是修改后的代码:
procedure TSprite.SetGroupNumber(AGroupNumber: Integer);
begin
if (AGroupNumber <> GroupNumber) and
(Engine <> nil) then
begin
if Groupnumber >= 0 then
Engine.Groups[GroupNumber].Remove(self);
if AGroupNumber >= 0 then
begin
Engine.Groups[AGroupNumber].Add(self);
//add by zhaogw :Update FGroupNumber is no way
FGroupNumber:=AGroupNumber;
end;
end;
end; {SetGroupNumber}
begin
if (AGroupNumber <> GroupNumber) and
(Engine <> nil) then
begin
if Groupnumber >= 0 then
Engine.Groups[GroupNumber].Remove(self);
if AGroupNumber >= 0 then
begin
Engine.Groups[AGroupNumber].Add(self);
//add by zhaogw :Update FGroupNumber is no way
FGroupNumber:=AGroupNumber;
end;
end;
end; {SetGroupNumber}
2:有Bug的地方:TSpriteEngine.GetGroup过程,错误原因是判断条件有误,修改后的代码如下:
function TSpriteEngine.GetGroup(Index: Integer): Tlist;
begin
//if (index >= 0) or (index < fGroupCount) then edit by zhaogw ,This is old
if (index >= 0) and (index < fGroupCount) then
result := fGroups[index]
else
result := nil;
end; {GetGroup}
begin
//if (index >= 0) or (index < fGroupCount) then edit by zhaogw ,This is old
if (index >= 0) and (index < fGroupCount) then
result := fGroups[index]
else
result := nil;
end; {GetGroup}
这里原来是or的判断条件,用了or后,很明显是无限值来的。因此,这里很明显应该把or改为and。
分类:
DelphiX修改历史
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架