Показать сообщение отдельно
Старый 21.01.2010, 07:31   #510
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от shyrikkk Посмотреть сообщение
неполучаеться !!! не выходит !!!! код у тебя не правельный !!!
1. Ты грузил текстуру в цикле - это косяк.
2. Использованная тобой привязка к миллисекундам будет показывать не с нулевого кадра, а неизвестно с какого.

Вот даю рабочий код, в котором разделил твою функцию на две, загрузка и обновление.
Добавил флаг анимации - надо ли анимировать. Повторный запуск анимации по нажатию на пробел.
Ну и глобальных переменных добавил.


Graphics3D 640,480
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
RotateEntity light,90,0,0
Global sprite=CreateSprite ()
PositionEntity sprite,0,0,5

Global anim_tex
Global onAnimate = True
Global timeStart
Global frame

trLoad()

While Not KeyDown( 1 )

If(KeyHit(57) > 0)
	onAnimate = True
	frame = 0
EndIf 

UpdateWorld 
trUpdate()
RenderWorld
Flip

Wend

End


Function trLoad()
	anim_tex = LoadAnimTexture( "b.jpg",1,128,128,0,30 )
	EntityBlend sprite ,3
	EntityTexture sprite,anim_tex,0
	timeStart = MilliSecs()
End Function


Function trUpdate()

	If(onAnimate = True)
		If(MilliSecs() - timeStart >= 50)
			EntityTexture sprite,anim_tex,frame
			frame = frame + 1
			If(frame=29) onAnimate = False			
			timeStart = MilliSecs()			
		EndIf 
	EndIf
End Function
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Жека за это полезное сообщение:
Fatalix3d (21.01.2010), shyrikkk (22.01.2010)