DelphiX中的DXSprite单元中涉及到修改

本文修复了TSprite.SetGroupNumber方法中FGroupNumber未被正确更新的问题,并修正了TSpriteEngine.GetGroup方法中的逻辑错误。通过将判断条件从or更改为and,确保了方法的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:FGroupNumber没有任何地方赋值的,因此,对FGroupNumber进行赋值,最佳位置是:TSprite.SetGroupNumber过程,因此,下面代码是修改后的代码:

procedure TSprite.SetGroupNumber(AGroupNumber: Integer);
begin
  
if (AGroupNumber <> GroupNumber) and
    (Engine 
<> nilthen
  
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 >= 0or (index < fGroupCount) then edit by zhaogw ,This is old
  
if (index >= 0and (index < fGroupCount) then
    result :
= fGroups[index]
  
else
    result :
= nil;
end{GetGroup}

 

这里原来是or的判断条件,用了or后,很明显是无限值来的。因此,这里很明显应该把or改为and。 

 

转载于:https://www.cnblogs.com/kfarvid/archive/2009/10/26/1590273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值