Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26061
Рейтинг: 2120
#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] [684]
Разработчик
Ответов: 26061
Рейтинг: 2120
#78: 2008-02-05 03:06:38 ЛС | профиль | цитата
Galkov, мягко говоря, твоя схема меня послала вот куда


карма: 22

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

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

карма: 9

0
файлы: 1capturesd.gif [87.6KB] [717]
Разработчик
Ответов: 26061
Рейтинг: 2120
#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
Разработчик
Ответов: 26061
Рейтинг: 2120
#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] [640]
Разработчик
Ответов: 26061
Рейтинг: 2120
#84: 2008-02-05 14:25:39 ЛС | профиль | цитата
Вот результаты тестирования на полу-дохлом компе

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

Исходный


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


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


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


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


карма: 22

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

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#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
Разработчик
Ответов: 26061
Рейтинг: 2120
#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] [582], result_104.jpg [2.8KB] [547]
Ответов: 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
Сообщение
...
Прикрепленные файлы
(файлы не залиты)