Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26235
Рейтинг: 2140
#76: 2008-02-04 22:40:11 ЛС | профиль | цитата
Galkov писал(а):
Да, может мне свой TimeCounter (он в микросекундвх результат дает) сделать "штатным"
Мне кажется -- не можно, а нужно. А вот потом уже, и продолжить разборки -- у кого чего "кажет".
карма: 22

0
Ответов: 9906
Рейтинг: 351
#77: 2008-02-05 02:22:59 ЛС | профиль | цитата
Вобщем так:
1) Обновил TimeCounter на SVN, вроде и совместимость получилась
2) Адаптировал схему под "гибкое" число спрайтов
3) Которую и выкладываю БЕЗ gif-чика. Кому интересно - у того он уже есть
4) Читайте соображения про вариантность кодов "у нутре"
5) Делитесь наблюдениями

У меня, грубо говоря, и 50 спрайтов летают себе

code_8311.txt
карма: 9

0
файлы: 1code_8311.txt [14KB] [831]
Разработчик
Ответов: 26235
Рейтинг: 2140
#78: 2008-02-05 03:06:38 ЛС | профиль | цитата
Galkov, мягко говоря, твоя схема меня послала вот куда


карма: 22

0
файлы: 1bug_001.jpg [12.8KB] [798]
Ответов: 9906
Рейтинг: 351
#79: 2008-02-05 08:53:48 ЛС | профиль | цитата
Судя по Caption, это не моя схема, это твой HiAsm
Попробуй заменить линк на "обыкновенную" копию мультика
------------ Дoбавленo:

Но если ты предпочитаешь скриншоты, пожалуйста:

карма: 9

0
файлы: 1capturesd.gif [87.6KB] [814]
Разработчик
Ответов: 26235
Рейтинг: 2140
#80: 2008-02-05 10:08:41 ЛС | профиль | цитата
Galkov писал(а):
Судя по Caption, это не моя схема, это твой HiAsm
А вот это, совсем не правда. У меня не мой HiAsm, а последний с апдэйта
от 21:56 22.12.2007, плюс все эти фичи с наследуемыми свойствами контролов от SVN.

------------ Дoбавленo:


Galkov, короче, у меня не грузиться вот этот мульт



Add(MultiElementEx,13068662,476,119)
{
 @Hint=#30:Мультик рисования 1-го спрайта|
 Mode=1
 link(onNext,2099003:doWork1,[(517,125)(517,107)(466,107)])
 link(onDraw,9101829:doWork2,[(517,132)(517,167)])
 link(Bitmap,5428734:Var3,[(482,65)])
}
BEGIN_SDK
  Add(EditMultiEx,16384433,21,21)
  {
   WorkCount=#5:##add|9:doRestore|8:##select|
   EventCount=#6:onNext|6:onDraw|
   DataCount=#6:Bitmap|
   Width=328
   Height=235
   Point(##add)
   Point(##select)
   link(##add,14965233:doValue,[(33,27)(33,34)])
   link(##select,7094899:doRestore,[(21,209)])
  }
  Add(ViewSHA,9870844,364,21)
  {
   Width=317
   Height=235
  }
  BEGIN_SDK
    Add(MultiElementEx,7483940,63,77)
    {
    }
    BEGIN_SDK
      Add(EditMultiEx,9351136,21,21)
      {
       WorkCount=#9:doRestore|
       EventCount=#10:onNewPoint|11:onNewSprite|
       DataCount=#6:Bitmap|1:X|1:Y|
       Width=279
       Height=207
       link(doRestore,2386803:doDraw,[(21,153)])
      }
      Add(Img_Copy,13193461,147,154)
      {
       Width=64
       Height=64
       MakeExt(Width,,Width)
       MakeExt(Height,,Height)
       link(onCopy,6443705:doEvent1,[])
       link(Source,6021073:Var3,[(153,135)])
       link(X,14121245:Var3,[(160,128)])
       link(Y,16035717:Var3,[(167,121)])
      }
      Add(Img_Bmp,2386803,49,147)
      {
       link(onDraw,12097056:doEvent1,[])
       link(Bitmap,6021073:Var2,[])
       link(SourceBitmap,13239051:Bitmap,[])
       link(X,14121245:Var2,[])
       link(Y,16035717:Var2,[])
      }
      Add(Bitmap,13239051,56,77)
      {
      }
      Add(Hub,6443705,203,154)
      {
       link(onEvent1,13239051:doLoad,[(253,160)(253,99)(44,99)(44,83)])
       link(onEvent2,9351136:onNewSprite,[(300,167)])
      }
      Add(GetDataEx,14121245,56,119)
      {
       link(Data,9351136:X,[(69,57)(34,57)])
      }
      Add(GetDataEx,16035717,63,112)
      {
       link(Data,9351136:Y,[(76,49)(41,49)])
      }
      Add(GetDataEx,6021073,42,126)
      {
       Angle=3
       link(Data,9351136:Bitmap,[(27,135)])
      }
      Add(Hub,12097056,98,147)
      {
       link(onEvent1,9351136:onNewPoint,[(287,153)(287,27)])
       link(onEvent2,13193461:doCopy,[])
      }
    END_SDK
    Add(InlineCode,8773907,63,182)
    {
     WorkPoints=#9:doRestore|
     EventPoints=#10:onNewPoint|11:onNewSprite|
     DataPoints=#6:Bitmap|1:X|1:Y|
     Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10:   private|16:    bmp:PBitmap;|18:    Xt,Yt:integer;|9:   public|26:    onNewPoint: THI_Event;|26:    onNewSprite:THI_Event;|26:    Bitmap,X,Y: THI_Event;|23:    destructor Destroy;|48:    procedure doRestore(var _D:TData; idx:word);|5: end;|0:|14:implementation|0:|31:destructor THiAsmClass.Destroy;|5:begin|11:  bmp.free;|4:end;|0:|56:procedure THiAsmClass.doRestore(var _D:TData; idx:word);|15:var bm:PBitmap;|5:begin|30:  bm := ReadBitmap(_D,Bitmap);|33:  if not assigned(bmp) then begin|28:    bmp := NewBitmap(64,64);|28:    Xt := ReadInteger(_D,X);|28:    Yt := ReadInteger(_D,Y);|44:  end else bmp.Draw(bm.canvas.Handle,Xt,Yt);|26:  _hi_OnEvent(onNewPoint);|26:  Xt := ReadInteger(_D,X);|34:  Yt := ReadInteger(_D,Y);        |37:  bm.Draw(bmp.canvas.Handle,-Xt,-Yt);|36:  _hi_CreateEvent_(_D,@onNewSprite);|4:end;|0:|4:end.|
    }
    Add(MultiElementEx,7150568,217,77)
    {
     @IsLib=True
    }
    BEGIN_SDK
      Add(EditMultiEx,9351136,21,21)
      {
       WorkCount=#6:doInit|9:doRestore|
       EventCount=#10:onNewPoint|11:onNewSprite|
       DataCount=#6:Bitmap|1:X|1:Y|
       Width=307
       Height=193
       link(doInit,6172453:doEvent1,[(25,27)(25,48)])
       link(doRestore,2386803:doDraw,[(21,174)])
      }
      Add(Img_Copy,13193461,126,112)
      {
       Width=64
       Height=64
       MakeExt(Width,,Width)
       MakeExt(Height,,Height)
       link(onCopy,13239051:doLoad,[])
       link(Source,13579959:Var2,[])
       link(X,3369687:Var2,[])
       link(Y,12291715:Var2,[])
      }
      Add(Img_Bmp,2386803,35,168)
      {
       link(onDraw,12097056:doEvent1,[])
       link(Bitmap,12810772:Var2,[])
       link(SourceBitmap,14147884:Var1,[(48,156)])
       link(X,3369687:Var1,[(55,86)])
       link(Y,12291715:Var1,[(62,93)])
      }
      Add(Bitmap,13239051,168,112)
      {
      }
      Add(GetDataEx,13579959,119,91)
      {
       Angle=3
       link(Data,12810772:Var3,[])
      }
      Add(Memory,13623118,231,42)
      {
       Point(Data)
       link(onData,107886:doOperation,[])
       link(Data,9351136:Y,[(237,21)])
      }
      Add(Memory,8245764,133,42)
      {
       Point(Data)
       link(onData,1180285:doOperation,[])
       link(Data,9351136:X,[(139,27)(34,27)])
      }
      Add(GetDataEx,14147884,161,147)
      {
       link(Data,13239051:Bitmap,[])
      }
      Add(Hub,12097056,77,168)
      {
       OutCount=3
       link(onEvent1,9351136:onNewPoint,[(316,174)(316,27)])
       link(onEvent2,2637978:doWork3,[(116,181)])
       link(onEvent3,8361269:doDraw,[])
      }
      Add(Img_Bmp,8361269,168,182)
      {
       link(onDraw,9351136:onNewSprite,[(328,188)])
       link(Bitmap,14147884:Var2,[])
       link(SourceBitmap,13579959:Var3,[(181,100)])
       link(X,1180285:Result,[])
       link(Y,107886:Result,[(195,155)(279,155)])
      }
      Add(Hub,6172453,70,42)
      {
       link(onEvent1,2637978:doWork2,[])
       link(onEvent2,13193461:doCopy,[(110,55)(110,118)])
      }
      Add(GetDataEx,12810772,28,91)
      {
       link(Data,9351136:Bitmap,[(41,32)(27,32)])
      }
      Add(GetDataEx,3369687,126,77)
      {
       link(Data,8245764:Value,[])
      }
      Add(GetDataEx,12291715,133,84)
      {
       Angle=1
       link(Data,13623118:Value,[(237,93)])
      }
      Add(Math,1180285,182,42)
      {
       OpType=2
       Op1=-1
       ResultType=0
       link(onResult,13623118:doValue,[])
      }
      Add(Math,107886,273,42)
      {
       OpType=2
       Op1=-1
       ResultType=0
      }
      Add(HubEx,2637978,112,35)
      {
       link(onEvent,8245764:doValue,[])
      }
    END_SDK
    Add(InfoTip,5118155,7,7)
    {
     Info=#14:Первая версия:|49:(-) динамически создается и уничтожается картинка|16:(+) зато простой|
     Font=[MS Sans Serif,8,0,16711680,1]
     HAlign=0
     Width=148
     Height=116
     Margin=5
    }
    Add(InfoTip,4231174,161,7)
    {
     Info=#14:Вторая версия:|19:(-) посложнее будет|23:(+) значитально быстрее|
     Font=[MS Sans Serif,8,0,16711680,1]
     HAlign=0
     Width=148
     Height=116
     Margin=5
    }
    Add(InfoTip,11762910,7,126)
    {
     Info=#14:Третья версия:|42:Пытаюсь сделать быстро, насколько возможно|
     Font=[MS Sans Serif,8,0,16711680,1]
     HAlign=0
     Width=148
     Height=102
     Margin=5
    }
    Add(InlineCode,14674078,217,182)
    {
     WorkPoints=#9:doRestore|
     EventPoints=#10:onNewPoint|11:onNewSprite|
     DataPoints=#6:Bitmap|1:X|1:Y|
     Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10:   private|16:    bmp:PBitmap;|18:    Xt,Yt:integer;|9:   public|26:    onNewPoint: THI_Event;|26:    onNewSprite:THI_Event;|26:    Bitmap,X,Y: THI_Event;|23:    destructor Destroy;|48:    procedure doRestore(var _D:TData; idx:word);|5: end;|0:|14:implementation|0:|31:destructor THiAsmClass.Destroy;|5:begin|11:  bmp.free;|4:end;|0:|56:procedure THiAsmClass.doRestore(var _D:TData; idx:word);|15:var bm:PBitmap;|5:begin|30:  bm := ReadBitmap(_D,Bitmap);|33:  if not assigned(bmp) then begin|28:    bmp := NewBitmap(64,64);|28:    Xt := ReadInteger(_D,X);|28:    Yt := ReadInteger(_D,Y);|11:  end else |71:    BitBlt(bm.Canvas.Handle,Xt,Yt,64,64,bmp.Canvas.Handle,0,0,SRCCOPY);|26:  _hi_OnEvent(onNewPoint);|26:  Xt := ReadInteger(_D,X);|34:  Yt := ReadInteger(_D,Y);        |69:  BitBlt(bmp.Canvas.Handle,0,0,64,64,bm.Canvas.Handle,Xt,Yt,SRCCOPY);|36:  _hi_CreateEvent_(_D,@onNewSprite);|4:end;|0:|4:end.|
    }
    Add(InfoTip,7539953,161,126)
    {
     Info=#17:Четвертая версия:|43:"yбыстрение" 3-й, замена Bmp.Draw на BitBlt|
     Font=[MS Sans Serif,8,0,16711680,1]
     HAlign=0
     Width=148
     Height=102
     Margin=5
    }
  END_SDK
  Add(MathParse,16456710,147,91)
  {
   @Hint=#11:Вычисляем Y|
   DataCount=1
   MathStr="(1+0.8*cos(%1*2.6))*208"
   ResultType=0
   AngleMode=1
   link(onResult,11922516:doNext,[])
   link(X1,13428754:Result,[(153,78)(88,78)(88,135)(48,135)])
  }
  Add(MathParse,11986210,98,91)
  {
   @Hint=#11:Вычисляем X|
   DataCount=1
   MathStr="(1+ 0.8*sin(%1))*288"
   ResultType=0
   AngleMode=1
   link(onResult,16456710:doCalc,[])
  }
  Add(Counter,11922516,196,91)
  {
   @Hint=#13:Номер спрайта|
   Max=59
   Default=-1
   link(onNext,16586188:doCalc,[])
  }
  Add(MathParse,16586188,245,91)
  {
   @Hint=#16:Вычисляем Point3|
   DataCount=1
   MathStr="31457280 + 64*%1 + 4193664*(%1 div 10)"
   ResultType=0
   AngleMode=1
   link(onResult,9092253:doData,[])
  }
  Add(DoData,15716003,140,203)
  {
   @Hint=#30:Помещам Point1 в голову потока|
   link(onEventData,7380280:doAdd,[])
   link(Data,13107590:Point,[])
  }
  Add(MathParse,13428754,42,91)
  {
   DataCount=1
   MathStr="%0 + (1.33+%1*0.01)"
   link(onResult,11986210:doCalc,[])
   link(X1,2983218:Var2,[])
  }
  Add(MultiElementEx,7094899,91,196)
  {
   elink(7150568)
   link(onNewPoint,13428754:doCalc,[(130,202)(130,149)(34,149)(34,97)])
   link(onNewSprite,15716003:doData,[])
   link(Bitmap,16384433:Bitmap,[(97,155)(27,155)])
   link(X,12034149:Var2,[])
   link(Y,16136829:Var1,[(111,135)])
  }
  Add(GetDataEx,16136829,140,126)
  {
   link(Data,16456710:Result,[])
  }
  Add(PointXY,13107590,140,154)
  {
   link(X,12034149:Var3,[(146,142)])
   link(Y,16136829:Var2,[])
  }
  Add(MT_Add,7380280,245,203)
  {
   @Hint=#29:Помещам Point3 в хвост потока|
   link(onAdd,16384433:onDraw,[(349,209)])
   link(Data,16586188:Result,[])
  }
  Add(GetDataEx,12034149,91,133)
  {
   link(Data,11986210:Result,[])
  }
  Add(DoData,9092253,294,91)
  {
   link(onEventData,16384433:onNext,[(340,97)(340,27)])
   link(Data,2983218:Var3,[(300,72)])
  }
  Add(Memory,14965233,42,28)
  {
   link(onData,7094899:doInit,[(82,34)(82,202)])
  }
  Add(GetDataEx,2983218,35,63)
  {
   link(Data,14965233:Value,[])
  }
END_SDK
карма: 22

0
Ответов: 9906
Рейтинг: 351
#81: 2008-02-05 10:56:47 ЛС | профиль | цитата
nesco, вот припомни блин, сколько раз (хотя бы ты, лично) слышал от меня, что я как-бы не вижу происходящего у тебя на экране
Смысл словосочетаний "не грузится", "схема послала", "не запускается" - для меня есть загадка
Ты даже не поставил себе в труд сообщить, после какого действия возникает ТО, что показано на скриншоте
Сколько же можно работать аки поледний лох.
Варианты :
1) При вставке на рабочем поле редактора
2) При входе в мультик
3) При нажатии Compile
- нет про это достоверной информации

nesco писал(а):
А вот это, совсем не правда. У меня не мой HiAsm, а последний с апдэйта

Да хоть из будущего.
Он "твой" хотя бы тем, что отличается от "моего"
Это не есть его лучшая характеристика, не говоря уже о том, что это совсем не характеристика схемы (как ты указал)


nesco писал(а):
короче, у меня не грузиться вот этот мульт

и чего я должен делать интересно, ничего не зная
Попробуй такое....
Add(MultiElementEx,13068662,126,112)
{
 @Hint=#32:Мультик рисования одного спрайта|
 Mode=1
}
BEGIN_SDK
  Add(EditMultiEx,16384433,21,21)
  {
   WorkCount=#5:##add|9:doRestore|8:##select|
   EventCount=#6:onNext|6:onDraw|
   DataCount=#6:Bitmap|
   Width=328
   Height=235
   Point(##add)
   Point(##select)
   link(##add,14965233:doValue,[(33,27)(33,34)])
   link(##select,9510819:doRestore,[(21,209)])
  }
  Add(GetDataEx,2983218,35,63)
  {
   link(Data,14965233:Value,[])
  }
  Add(MathParse,16456710,147,91)
  {
   @Hint=#11:Вычисляем Y|
   DataCount=1
   MathStr="(1+0.8*cos(%1*2.6))*208"
   ResultType=0
   AngleMode=1
   link(onResult,11922516:doNext,[])
   link(X1,13428754:Result,[(153,78)(88,78)(88,135)(48,135)])
  }
  Add(MathParse,11986210,98,91)
  {
   @Hint=#11:Вычисляем X|
   DataCount=1
   MathStr="(1+ 0.8*sin(%1))*288"
   ResultType=0
   AngleMode=1
   link(onResult,16456710:doCalc,[])
  }
  Add(Counter,11922516,196,91)
  {
   @Hint=#13:Номер спрайта|
   Max=59
   Default=-1
   link(onNext,16586188:doCalc,[])
  }
  Add(MathParse,16586188,245,91)
  {
   @Hint=#16:Вычисляем Point3|
   DataCount=1
   MathStr="31457280 + 64*%1 + 4193664*(%1 div 10)"
   ResultType=0
   AngleMode=1
   link(onResult,9092253:doData,[])
  }
  Add(DoData,15716003,140,203)
  {
   @Hint=#30:Помещам Point1 в голову потока|
   link(onEventData,7380280:doAdd,[])
   link(Data,13107590:Point,[])
  }
  Add(MathParse,13428754,42,91)
  {
   DataCount=1
   MathStr="%0 + (1.33+%1*0.01)"
   link(onResult,11986210:doCalc,[])
   link(X1,2983218:Var2,[])
  }
  Add(MultiElementEx,9510819,91,196)
  {
   link(onNewPoint,13428754:doCalc,[(128,202)(128,150)(34,150)(34,97)])
   link(onNewSprite,15716003:doData,[])
   link(Bitmap,16384433:Bitmap,[(97,156)(27,156)])
   link(X,12034149:Var2,[])
   link(Y,16136829:Var1,[(111,135)])
  }
  BEGIN_SDK
    Add(EditMultiEx,9351136,21,21)
    {
     WorkCount=#6:doInit|9:doRestore|
     EventCount=#10:onNewPoint|11:onNewSprite|
     DataCount=#6:Bitmap|1:X|1:Y|
     Width=307
     Height=193
     link(doInit,6172453:doEvent1,[(25,27)(25,48)])
     link(doRestore,2386803:doDraw,[(21,174)])
    }
    Add(Img_Copy,13193461,126,112)
    {
     Width=64
     Height=64
     MakeExt(Width,,Width)
     MakeExt(Height,,Height)
     link(onCopy,13239051:doLoad,[])
     link(Source,13579959:Var2,[])
     link(X,3369687:Var2,[])
     link(Y,12291715:Var2,[])
    }
    Add(Img_Bmp,2386803,35,168)
    {
     link(onDraw,12097056:doEvent1,[])
     link(Bitmap,12810772:Var2,[])
     link(SourceBitmap,14147884:Var1,[(48,156)])
     link(X,3369687:Var1,[(55,86)])
     link(Y,12291715:Var1,[(62,93)])
    }
    Add(Bitmap,13239051,168,112)
    {
    }
    Add(GetDataEx,13579959,119,91)
    {
     Angle=3
     link(Data,12810772:Var3,[])
    }
    Add(Memory,13623118,231,42)
    {
     Point(Data)
     link(onData,107886:doOperation,[])
     link(Data,9351136:Y,[(237,21)])
    }
    Add(Memory,8245764,133,42)
    {
     Point(Data)
     link(onData,1180285:doOperation,[])
     link(Data,9351136:X,[(139,27)(34,27)])
    }
    Add(GetDataEx,14147884,161,147)
    {
     link(Data,13239051:Bitmap,[])
    }
    Add(Hub,12097056,77,168)
    {
     OutCount=3
     link(onEvent1,9351136:onNewPoint,[(316,174)(316,27)])
     link(onEvent2,2637978:doWork3,[(116,181)])
     link(onEvent3,8361269:doDraw,[])
    }
    Add(Img_Bmp,8361269,168,182)
    {
     link(onDraw,9351136:onNewSprite,[(328,188)])
     link(Bitmap,14147884:Var2,[])
     link(SourceBitmap,13579959:Var3,[(181,100)])
     link(X,1180285:Result,[])
     link(Y,107886:Result,[(195,155)(279,155)])
    }
    Add(Hub,6172453,70,42)
    {
     link(onEvent1,2637978:doWork2,[])
     link(onEvent2,13193461:doCopy,[(110,55)(110,118)])
    }
    Add(GetDataEx,12810772,28,91)
    {
     link(Data,9351136:Bitmap,[(41,32)(27,32)])
    }
    Add(GetDataEx,3369687,126,77)
    {
     link(Data,8245764:Value,[])
    }
    Add(GetDataEx,12291715,133,84)
    {
     Angle=1
     link(Data,13623118:Value,[(237,93)])
    }
    Add(Math,1180285,182,42)
    {
     OpType=2
     Op1=-1
     ResultType=0
     link(onResult,13623118:doValue,[])
    }
    Add(Math,107886,273,42)
    {
     OpType=2
     Op1=-1
     ResultType=0
    }
    Add(HubEx,2637978,112,35)
    {
     link(onEvent,8245764:doValue,[])
    }
  END_SDK
  Add(GetDataEx,16136829,140,126)
  {
   link(Data,16456710:Result,[])
  }
  Add(PointXY,13107590,140,154)
  {
   link(X,12034149:Var3,[(146,142)])
   link(Y,16136829:Var2,[])
  }
  Add(MT_Add,7380280,245,203)
  {
   @Hint=#29:Помещам Point3 в хвост потока|
   link(onAdd,16384433:onDraw,[(349,209)])
   link(Data,16586188:Result,[])
  }
  Add(GetDataEx,12034149,91,133)
  {
   link(Data,11986210:Result,[])
  }
  Add(DoData,9092253,294,91)
  {
   link(onEventData,16384433:onNext,[(340,97)(340,27)])
   link(Data,2983218:Var3,[(300,72)])
  }
  Add(Memory,14965233,42,28)
  {
   link(onData,9510819:doInit,[(82,34)(82,202)])
  }
  Add(MultiElementEx,7483940,427,98)
  {
  }
  BEGIN_SDK
    Add(EditMultiEx,9351136,21,21)
    {
     WorkCount=#9:doRestore|
     EventCount=#10:onNewPoint|11:onNewSprite|
     DataCount=#6:Bitmap|1:X|1:Y|
     Width=279
     Height=207
     link(doRestore,2386803:doDraw,[(21,153)])
    }
    Add(Img_Copy,13193461,147,154)
    {
     Width=64
     Height=64
     MakeExt(Width,,Width)
     MakeExt(Height,,Height)
     link(onCopy,6443705:doEvent1,[])
     link(Source,6021073:Var3,[(153,135)])
     link(X,14121245:Var3,[(160,128)])
     link(Y,16035717:Var3,[(167,121)])
    }
    Add(Img_Bmp,2386803,49,147)
    {
     link(onDraw,12097056:doEvent1,[])
     link(Bitmap,6021073:Var2,[])
     link(SourceBitmap,13239051:Bitmap,[])
     link(X,14121245:Var2,[])
     link(Y,16035717:Var2,[])
    }
    Add(Bitmap,13239051,56,77)
    {
    }
    Add(Hub,6443705,203,154)
    {
     link(onEvent1,13239051:doLoad,[(253,160)(253,99)(44,99)(44,83)])
     link(onEvent2,9351136:onNewSprite,[(300,167)])
    }
    Add(GetDataEx,14121245,56,119)
    {
     link(Data,9351136:X,[(69,57)(34,57)])
    }
    Add(GetDataEx,16035717,63,112)
    {
     link(Data,9351136:Y,[(76,49)(41,49)])
    }
    Add(GetDataEx,6021073,42,126)
    {
     Angle=3
     link(Data,9351136:Bitmap,[(27,135)])
    }
    Add(Hub,12097056,98,147)
    {
     link(onEvent1,9351136:onNewPoint,[(287,153)(287,27)])
     link(onEvent2,13193461:doCopy,[])
    }
  END_SDK
  Add(InlineCode,8773907,427,203)
  {
   WorkPoints=#9:doRestore|
   EventPoints=#10:onNewPoint|11:onNewSprite|
   DataPoints=#6:Bitmap|1:X|1:Y|
   Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10:   private|16:    bmp:PBitmap;|18:    Xt,Yt:integer;|9:   public|26:    onNewPoint: THI_Event;|26:    onNewSprite:THI_Event;|26:    Bitmap,X,Y: THI_Event;|23:    destructor Destroy;|48:    procedure doRestore(var _D:TData; idx:word);|5: end;|0:|14:implementation|0:|31:destructor THiAsmClass.Destroy;|5:begin|11:  bmp.free;|4:end;|0:|56:procedure THiAsmClass.doRestore(var _D:TData; idx:word);|15:var bm:PBitmap;|5:begin|30:  bm := ReadBitmap(_D,Bitmap);|33:  if not assigned(bmp) then begin|28:    bmp := NewBitmap(64,64);|28:    Xt := ReadInteger(_D,X);|28:    Yt := ReadInteger(_D,Y);|44:  end else bmp.Draw(bm.canvas.Handle,Xt,Yt);|26:  _hi_OnEvent(onNewPoint);|26:  Xt := ReadInteger(_D,X);|34:  Yt := ReadInteger(_D,Y);        |37:  bm.Draw(bmp.canvas.Handle,-Xt,-Yt);|36:  _hi_CreateEvent_(_D,@onNewSprite);|4:end;|0:|4:end.|
  }
  Add(MultiElementEx,7150568,581,98)
  {
  }
  BEGIN_SDK
    Add(EditMultiEx,9351136,21,21)
    {
     WorkCount=#6:doInit|9:doRestore|
     EventCount=#10:onNewPoint|11:onNewSprite|
     DataCount=#6:Bitmap|1:X|1:Y|
     Width=307
     Height=193
     link(doInit,6172453:doEvent1,[(25,27)(25,48)])
     link(doRestore,2386803:doDraw,[(21,174)])
    }
    Add(Img_Copy,13193461,126,112)
    {
     Width=64
     Height=64
     MakeExt(Width,,Width)
     MakeExt(Height,,Height)
     link(onCopy,13239051:doLoad,[])
     link(Source,13579959:Var2,[])
     link(X,3369687:Var2,[])
     link(Y,12291715:Var2,[])
    }
    Add(Img_Bmp,2386803,35,168)
    {
     link(onDraw,12097056:doEvent1,[])
     link(Bitmap,12810772:Var2,[])
     link(SourceBitmap,14147884:Var1,[(48,156)])
     link(X,3369687:Var1,[(55,86)])
     link(Y,12291715:Var1,[(62,93)])
    }
    Add(Bitmap,13239051,168,112)
    {
    }
    Add(GetDataEx,13579959,119,91)
    {
     Angle=3
     link(Data,12810772:Var3,[])
    }
    Add(Memory,13623118,231,42)
    {
     Point(Data)
     link(onData,107886:doOperation,[])
     link(Data,9351136:Y,[(237,21)])
    }
    Add(Memory,8245764,133,42)
    {
     Point(Data)
     link(onData,1180285:doOperation,[])
     link(Data,9351136:X,[(139,27)(34,27)])
    }
    Add(GetDataEx,14147884,161,147)
    {
     link(Data,13239051:Bitmap,[])
    }
    Add(Hub,12097056,77,168)
    {
     OutCount=3
     link(onEvent1,9351136:onNewPoint,[(316,174)(316,27)])
     link(onEvent2,2637978:doWork3,[(116,181)])
     link(onEvent3,8361269:doDraw,[])
    }
    Add(Img_Bmp,8361269,168,182)
    {
     link(onDraw,9351136:onNewSprite,[(328,188)])
     link(Bitmap,14147884:Var2,[])
     link(SourceBitmap,13579959:Var3,[(181,100)])
     link(X,1180285:Result,[])
     link(Y,107886:Result,[(195,155)(279,155)])
    }
    Add(Hub,6172453,70,42)
    {
     link(onEvent1,2637978:doWork2,[])
     link(onEvent2,13193461:doCopy,[(110,55)(110,118)])
    }
    Add(GetDataEx,12810772,28,91)
    {
     link(Data,9351136:Bitmap,[(41,32)(27,32)])
    }
    Add(GetDataEx,3369687,126,77)
    {
     link(Data,8245764:Value,[])
    }
    Add(GetDataEx,12291715,133,84)
    {
     Angle=1
     link(Data,13623118:Value,[(237,93)])
    }
    Add(Math,1180285,182,42)
    {
     OpType=2
     Op1=-1
     ResultType=0
     link(onResult,13623118:doValue,[])
    }
    Add(Math,107886,273,42)
    {
     OpType=2
     Op1=-1
     ResultType=0
    }
    Add(HubEx,2637978,112,35)
    {
     link(onEvent,8245764:doValue,[])
    }
  END_SDK
  Add(InfoTip,5118155,371,28)
  {
   Info=#14:Первая версия:|49:(-) динамически создается и уничтожается картинка|16:(+) зато простой|
   Font=[MS Sans Serif,8,0,16711680,1]
   HAlign=0
   Width=148
   Height=116
   Margin=5
  }
  Add(InfoTip,4231174,525,28)
  {
   Info=#14:Вторая версия:|19:(-) посложнее будет|23:(+) значитально быстрее|
   Font=[MS Sans Serif,8,0,16711680,1]
   HAlign=0
   Width=148
   Height=116
   Margin=5
  }
  Add(InfoTip,11762910,371,147)
  {
   Info=#14:Третья версия:|42:Пытаюсь сделать быстро, насколько возможно|
   Font=[MS Sans Serif,8,0,16711680,1]
   HAlign=0
   Width=148
   Height=102
   Margin=5
  }
  Add(InlineCode,14674078,581,203)
  {
   WorkPoints=#9:doRestore|
   EventPoints=#10:onNewPoint|11:onNewSprite|
   DataPoints=#6:Bitmap|1:X|1:Y|
   Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10:   private|16:    bmp:PBitmap;|18:    Xt,Yt:integer;|9:   public|26:    onNewPoint: THI_Event;|26:    onNewSprite:THI_Event;|26:    Bitmap,X,Y: THI_Event;|23:    destructor Destroy;|48:    procedure doRestore(var _D:TData; idx:word);|5: end;|0:|14:implementation|0:|31:destructor THiAsmClass.Destroy;|5:begin|11:  bmp.free;|4:end;|0:|56:procedure THiAsmClass.doRestore(var _D:TData; idx:word);|15:var bm:PBitmap;|5:begin|30:  bm := ReadBitmap(_D,Bitmap);|33:  if not assigned(bmp) then begin|28:    bmp := NewBitmap(64,64);|28:    Xt := ReadInteger(_D,X);|28:    Yt := ReadInteger(_D,Y);|11:  end else |71:    BitBlt(bm.Canvas.Handle,Xt,Yt,64,64,bmp.Canvas.Handle,0,0,SRCCOPY);|26:  _hi_OnEvent(onNewPoint);|26:  Xt := ReadInteger(_D,X);|34:  Yt := ReadInteger(_D,Y);        |69:  BitBlt(bmp.Canvas.Handle,0,0,64,64,bm.Canvas.Handle,Xt,Yt,SRCCOPY);|36:  _hi_CreateEvent_(_D,@onNewSprite);|4:end;|0:|4:end.|
  }
  Add(InfoTip,7539953,525,147)
  {
   Info=#17:Четвертая версия:|43:"yбыстрение" 3-й, замена Bmp.Draw на BitBlt|
   Font=[MS Sans Serif,8,0,16711680,1]
   HAlign=0
   Width=148
   Height=102
   Margin=5
  }
END_SDK
карма: 9

0
Разработчик
Ответов: 26235
Рейтинг: 2140
#82: 2008-02-05 11:52:40 ЛС | профиль | цитата
Galkov писал(а):
При вставке на рабочем поле редактора
Вот именно по этой причине. Об этом писано уже было, что в некоторых случаях выскакивает ошибка.

Но я же написал достаточно ясно --
nesco писал(а):
у меня не грузиться вот этот мульт

Я его пробовал и вставлять и грузить из файла.
------------ Дoбавленo:

Galkov, загрузил схему, но у меня только один бубл летает, что-то, где-то потерялось. Можно ли выложить полную версию с исправленным мультом?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#83: 2008-02-05 12:20:25 ЛС | профиль | цитата
code_8316.txt
карма: 9

0
файлы: 1code_8316.txt [16.6KB] [803]
Разработчик
Ответов: 26235
Рейтинг: 2140
#84: 2008-02-05 14:25:39 ЛС | профиль | цитата
Вот результаты тестирования на полу-дохлом компе

Модули проверялись слева-направо и сверху-вниз

Исходный


Верхний-левый


Верхний-правый


Нижний-левый


Нижний-правый


карма: 22

0
файлы: 5result_000.jpg [6KB] [785], result_001.jpg [6KB] [776], result_002.jpg [6KB] [725], result_003.jpg [6KB] [717], result_004.jpg [5.9KB] [729]
Ответов: 9906
Рейтинг: 351
#85: 2008-02-05 15:32:06 ЛС | профиль | цитата
И все время показывал загрузку 2%
карма: 9

0
Разработчик
Ответов: 26235
Рейтинг: 2140
#86: 2008-02-05 15:52:41 ЛС | профиль | цитата
Galkov, гораздо меньше И чего же это тогда он показывает, фонарь что ли? Вот и доверяй людям.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#87: 2008-02-05 16:59:57 ЛС | профиль | цитата
А вот у меня несколько посмешнее все (XP-home+прокачка, Celeron-335D(2.8ГГц), Radeon-7000IGP)

1) Скажем мой исходный вариант (он же - "правый сверху") на скрине выше, т.е., вроде бы как побыстрее чем у тебя
И показывает типа 4-5% загрузки (хотя тоже врет ведь). Ну чего-то там на монитор антивиря уходит - копейки какие-то...
Но это до первого серьезного потрясения для винды. Если начнет запускаться какой-нибудь Office (кратковременная 100%-ная загрузка), она жутко обидится: начнет рассказывать, что теперь ты трудишься не 12мс, а вдвое дольше - типа 24... Загрузку покажет 80% (в общем-то стыкуется), да и тормоза на других прогах тоже станут заметны.
Но работать все будет продолжать чисто, без пропусков
Это еще не все
Если закрыть прогу, то винда еще минуты 2 обижаться будет (показывая при этом 4-5% загрузки). Если прогу перезапустить до окончания ее обид, то она сразу будет показывать 24мс, если подождать пока успокоится - все как с самого начала.
Если при той же частоте кадров сделать, скажем 32 бублика (показания типа 7042<32>), то обид уже не наблюдается
Как верить ее каким-то показаниям - я и сам не пойму теперь

2) Видим, что таймер, оказывается, работает с дискретом 15мс: фиг ты его заставишь дать частоту более 64, два кванта - уже 32, 3 кванта - 21, и т.д..
Раньше я думал, как дурак, что квант, это 10 мс....

3) Ну и скажи мне, наконец, как гинеколог гинекологу: нафига в KOL-овском TBitmap.Draw создаются и уничтожаются динамические объекты...
Грубо говоря, нафига там вообще чего-то есть, кроме BitBlt...
Сам же видишь, получается серьезная разница, это еще учесть, что в твоих 9837мксек заметить время именно на BitBlt у меня вообще не получилось...
карма: 9

0
Ответов: 2125
Рейтинг: 159
#88: 2008-02-05 18:13:15 ЛС | профиль | цитата
Galkov писал(а):
Раньше я думал, как дурак, что квант, это 10 мс....

Ну дык раньше ты небось W2K имел А вообще, этот квант - минимальный из требуемых для текущего набора приложений и сервисов. Требуемый квант иногда можно и задать при помощи timeBeginPeriod (тоже, однако, только в миллисекундах), на W2K работало на ура, даже 1 мс, а вот с ХРюшей у меня не вышло. Но никто и не обещал требуемой точности
карма: 1

0
Разработчик
Ответов: 26235
Рейтинг: 2140
#89: 2008-02-05 19:27:45 ЛС | профиль | цитата
Прверил это зоопарк на домашнем компе, результат сильно отличается

Худший результат (верхний-левый)


Лучший результат (нижний-правый)


В диспетчере выше 6% не поднималось, даже при загрузке офиса (в проге ниже 26 не падало), загрузку отпускало сразу (у меня отключен swap-файл, может из-за этого).

Комп -- MB Asus-P5B -- MEM 3.00 Gb -- P4-3.00 ГГц (LG775)-- Nvidia (Asus) 8600 GTS (PCIE)
карма: 22

0
файлы: 2result_101.jpg [2.9KB] [677], result_104.jpg [2.8KB] [650]
Ответов: 9906
Рейтинг: 351
#90: 2008-02-05 20:56:32 ЛС | профиль | цитата
nesco писал(а):
Комп -- MB Asus-P5B -- MEM 3.00 Gb -- P4-3.00 ГГц (LG775)-- Nvidia (Asus) 8600 GTS (PCIE)

Что-то мне кажется, что фамилия оси тоже значение имеет

nesco, проведи простой эксперимент: запусти тест, посмотри результаты; потом запусти "тормозную" прогу и потормози с минутку, наблюдая за своим тестом
Например такую:

#sha
Add(MainForm,943044,49,105)
{
 Left=10
 Top=10
 Width=151
 Height=80
 Position=1
}
Add(Button,12236679,49,49)
{
 Left=15
 Top=15
 Width=115
 Caption="1sec - BEEP"
 link(onClick,15091096:doSleepMks,[])
}
Add(Sleep,15091096,98,49)
{
 Delay=1000000
 link(onSleep,3454020:doBeep,[])
}
Add(Beep,3454020,154,49)
{
}
- и пощелкай раз 100 по кнопке
Скажем у меня: на 50 спрайтов на 32Гц - компа хватает.
Запускаю 10 спрайтов вижу ~2300мкс (при запасе в 31200мкс)
"Торможу" с минутку - готово (хоть и ОЧЕНЬ не сразу), показания ~4600мкс
И вот именно теперь показания загрузки начинают походить на правду: 15%


tsdima писал(а):
Ну дык раньше ты небось W2K имел

Раньше я имел 160-й пенёк с 32-мя метрами на борту (98-я, естественно), но из какого пальца глупость высосал - не помню напрочь
Но это ерунда конечно (цифирька странными только кажутся)...
Фиг с ними, пусть не кормят в дороге, а врать-то зачем

Понятно опять же, что они, Волки, своим словам хозяева: сами слово дают, сами обратно берут
Но не до такой же степени: УЖЕ НЕ В ОЧКАХ ДЕЛО - пусть скажут: они есть, или их нет

Сколько весит вычислительный процесс рисования 10 спрайтов 2.3мс, или 4.6мс
Не менее интересно, столько это весило БЫ "под досом в закрытых прерываниях"

Я еще не позабыл, что отношение частот процев моего предыдущего компа и сегодняшнего = 2.8/0.16 = 17.5
И что задачи у меня, действительно - стали быстрее крутиться
Раз эдак в пять.....
карма: 9

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)