28.08.2007, 14:41
|
#13
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: FAQ по B3D
ВОПРОС : так как же все-таки загрузить gif картинку как анимационную ленту?
ОТВЕТ:
можно так:
; Animated Gif file loader by Peter Scheutz 2003.03.13
; Load animated Gif and returns an animImage
; Stores number of frames in gifframecount
Global gifframecount
; useage:
;myanim=LoadAnimGif("mygif.gif")
Function LoadAnimGif(fname$)
Local fbank
Local f
Local thegif
Local animPic
Local count
Local framecount
fbank=CreateBank(FileSize(fname$))
f=OpenFile(fname$)
ReadBytes fbank,f,0,BankSize(fbank)
CloseFile f
; This is a quick hack and not quite good enough,
; as it could count too many frames
; Works for all the gifs I tested though...
; Looks for "Gif magic marker"
For n=0 To BankSize(fbank)-1
If PeekByte(fbank,n)=0
If PeekByte(fbank,n+1)=33
If PeekByte(fbank,n+2)=249
;DebugLog "Gif Magic found at: " + n
framecount=framecount+1
EndIf
EndIf
EndIf
Next
FreeBank fbank
thegif=OpenMovie(fname$)
animPic=CreateImage(MovieWidth(thegif),MovieHeight(thegif),framecount)
SetBuffer BackBuffer()
count=0
While MoviePlaying(thegif) And count<framecount
DrawMovie thegif,0,0
GrabImage animPic,0,0,count
count=count+1
Wend
CloseMovie thegif
Cls
Flip
; store framecount in global variable
gifframecount=framecount
Return animPic
End Function
ВОПРОС : как узнать scancode нужной мне клавиши?
ОТВЕТ: нужно нажать на кнопку ввиде домика на главной панели и вы попадете на главную страницу helpa , далее жмем Command Reference . Теперь на панели слева будут надписи Scancodes и Scancodes picker. Нажав на первую надпись вы попадете на страницу где бедет записаны все сканкоды клавиш в виде " Key - scancode". Нажав на другой надписи перед вами появится изображение клавиатуры. Нажав на нужную вам клавишу в верхнем поле с надписью Scan Code появится число, которое и является сканкодом выбранной клавиши.
ВОПРОС : как узнать сколько треугольников в текущем фрейме?
ОТВЕТ:для этого есть команда TrisRendered(), которая возвращает число треугольников попавших в камеру. Посмотреть можно так: Text 10,10,trisRendered()
ВОПРОС : что делать если мне надо в типе сделать массив, например для элемета patrons?
ОТВЕТ: Для этого просто впишите следующую строку в тип :
Field patrons[100]
Теперь обращатся к этому массиву можно так:
указатель\patrons[13] = zaklinit_pistolet()
ВОПРОС : У меня есть переменная. Она у меня должна вызываться в разных функциях, но этого не происходит.В чем может быть проблема?
ОТВЕТ: Раз у вас переменная вызывается в разных функциях, то ее нужно обзывать как глобальную, тогда она будет доступна в любой части кода. Обзывать ее можно перед главным циклом, сразу после инициализации графики( после строчки graphics....), вот так:
global имя_переменной
|
(Offline)
|
|