Показать сообщение отдельно
Старый 16.11.2013, 14:10   #5
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Непостоянная ошибка

Чтобы раздел не захламлять, напишу сюда. Возникла ещё проблема: я создал команду dpPositionArea, аналогичную Blitz-евской PositionEntity, если её использовать не более, чем дважды, вне цикла, то всё работает, если больше, то Blitz зависает на чёрном экране(помогает задержка, но чем чаще команду используешь, тем продолжительней она нужна(например, для 3-й - 400мс)). Интересно, что в цикле никаких проблем не возникает. С чем это может быть связано?

P.S. Дебаггер Барсика ошибок не выявил.

ProcedureDLL.f dpPositionArea(*area,xPos.f,yPos.f,zPos.f)
  If FindMapElement(Objects(),Str(PeekI(*area)))
    Objects()\xPos = xPos
    Objects()\yPos = yPos
    Objects()\zPos = zPos
  Else
    error = 1  
  EndIf
EndProcedure
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

arial = LoadFont("arial",20,True)
SetFont arial

cam = CreateCamera()
PositionEntity cam,0,0,-10

plane = CreatePlane()
EntityColor plane,0,100,100
PositionEntity plane,0,-1,0

sphere1 = CreateSphere()
EntityColor sphere1,150,0,0

sphere2 = CreateSphere()
EntityColor sphere2,0,0,150

sphere3 = CreateSphere()
EntityColor sphere3,0,150,0

sphere4 = CreateSphere()
EntityColor sphere4,150,0,0

r1 = dpCreateArea(0,10)
r2 = dpCreateArea(0,2)
r3 = dpCreateArea(0,3)

dpPositionArea(r1,0,0,0)
dpPositionArea(r2,0,0,0)
dpPositionArea(r3,0,0,0)


While Not dpControlErrors() <> 0 Or KeyHit(1)

If KeyDown(17)
	dpPropelArea(r1,1,0,0)
EndIf

dpAttachEntity(sphere1,r1)
dpAttachEntity(sphere2,r2)
dpAttachEntity(sphere3,r3)

dpUpdateAreas()

UpdateWorld()
RenderWorld()

Flip

Wend

If dpControlErrors() <> 0
	Print dpControlErrors()
EndIf

WaitKey()

End
UPD. Решается с помощью задержки в Blitz-е, а не в Барсике: для 9 команд подходит Delay(40)
__________________
(Offline)
 
Ответить с цитированием