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 }

 

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 }

 

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

 

你可能感兴趣的:(Delphi)