25.10.2011, 16:15
|
#10
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: xfreeEntity
Включи лог и посмотри на хендлы кубов. Они повторяются - новый куб может быть создан на месте старого, т.к. размеры объектов одинаковые и аллокатору удобно засунуть новый объект на место старого.
При этом в r\target все еще хранится указатель на объект, который может быть уже не тем первоначальным объектом.
Type target
Field entity
Field speed#
Field r.Reader
End Type
Function Target(x#,y#, withObject=0)
Local t.target = New target
t\entity = xCreateCube()
xPositionEntity t\entity,x,y,0
xScaleEntity t\entity,.3,.3,.3
t\speed = -Rnd(.05,.08)
If withObject = 1 Then t\r = Reader(t\entity)
End Function
Function Target_update()
Local t.target
For t.target = Each target
xTranslateEntity t\entity,0,t\speed,0
If xEntityY(t\entity)<0 Then
xFreeEntity t\entity: t\entity=0
If t\r <> Null
t\r\target = 0
EndIf
Delete t
EndIf
Next
End Function
Type Reader
Field entity
Field target
End Type
Function Reader.Reader(entity)
r.Reader = New Reader
r\entity = xCreateCube(): xEntityColor r\entity,255,0,0: xEntityAlpha r\entity,.5
r\target = entity
Return r
End Function
Function Reader_update()
For r.Reader = Each Reader
If r\target>0 Then xPositionEntity r\entity, xEntityX(r\target,1), xEntityY(r\target,1),0
Next
End Function
__________________
|
(Offline)
|
|