PureBasic << 1 ... 3 4 5 6 7 ... 11 >> 3.05.2013 / 12:12 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| Кстати 3d вроде полноценное
|
3.05.2013 / 16:06 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| JUST_EVIL, начинаем прогить __________________
わからない!! |
3.05.2013 / 16:17 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| ВитаминКО, я уже два дня им живу) Язык легкий очень, одно удовольствие писать на нем. Только с библиотеками еще не особо разобрался.
|
3.05.2013 / 16:21 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| JUST_EVIL, разберешься)
__________________
わからない!! |
3.05.2013 / 20:00 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| ; Автор - cherri123
; http://purebasic.info/phpBB2/viewtopic.php?t=1153
Structure GIF
gadget.w
file_name.s
count_frames.w
status_play.w
getframes.w
im_frame.w
multiplication.s
time_read.w
time2.w
delay.w
im_Height.w
im_Width.w
px.w
py.w
EndStructure
Global count_smile.w
Global Dim gif.gif(10000)
Global Dim Delay_(10000,10000)
; NewList
UsePNGImageDecoder()
; im_Height=ImageHeight(#Image)
; im_Width=ImageWidth(#Image)
Procedure load_im()
If ReadFile(0,"ani_smiles\animate.bin")
; формат файла animate.bin
; Описание смайла #1
; b | Число кадров в png файле
; b | Число кадров в анимации смайла
; | Кадр анимации #1
; b | Номер кадра в png-файле
; b | Длительность кадра в 0.1 секунды (короткие кадры уже отброшены)
; | Кадр анимации #2
; b | ...
;
; Описание смайла #2
; Debug "Длина файла ["+Str(Lof(0))+"]"
count_smile=ReadAsciiCharacter(0)
; Debug "Количество анимированных фалов в формате PNG ["+Str(count_smile)+"]"
; Debug "_____________________________"
; ReDim Delay_(count_smile,10000)
Repeat
st=st+1
; Debug "=============== № файла ["+Str(st)+"] ================="
; имя файла анимации
gif(st)\file_name="ani_smiles\"+Str(st)+".png"
If LoadImage(st, gif(st)\file_name)
; число кадров в файле
Chislo_kadrov_PNG=ReadAsciiCharacter(0)
; Debug "Число кадров в png файле ["+Str(Chislo_kadrov_PNG)+"]"
im_Height=ImageHeight(st)
im_Width=ImageWidth(st)
; высота и ширина отображаемого кадра
gif(st)\im_Height=im_Height
gif(st)\im_Width=im_Width/Chislo_kadrov_PNG
For i=0 To Chislo_kadrov_PNG-1
no_image2$=Str(st*10)+Str(i)
x=gif(st)\im_Width*i
y=0
Width=gif(st)\im_Width
Height=gif(st)\im_Height
; Debug "*****"+Str(i)+"*****"
; Debug x
; Debug y
; Debug Width
; Debug Height
; Debug "*******************"
result=GrabImage(st, Val(no_image2$),x, y, Width, Height)
; Debug "no_image2$ "+no_image2$;Str(result)
Next i
; число кадров в анимации смайла
Chislo_kadrov_anim=ReadAsciiCharacter(0)
gif(st)\count_frames= Chislo_kadrov_anim
; Debug "Число кадров в анимации смайла ["+Str(Chislo_kadrov_anim)+"]"
; кадры в анимации
For i=1 To Chislo_kadrov_anim
no_frame_in_png=ReadAsciiCharacter(0)
delay_frame=ReadAsciiCharacter(0)
; Debug "Номер кадра в png-файле >> ["+Str(no_frame_in_png)+"]"
; Debug "Длительность кадра в 0.1 секунды >> ["+Str(delay_frame)+"]"
tmp$=tmp$+Str(st*10)+Str(no_frame_in_png)+","+Str(delay_frame)+">"
Next i
gif(st)\multiplication=tmp$
; Debug "Мультипликация файла >> "+tmp$
tmp$=""
EndIf
; Debug "===================================="
If Eof(0)
q=1
EndIf
Until q=1
EndIf
EndProcedure
Procedure ani_ImageGadget(gadget,x,y,width,height,smile,flag)
If IsGadget(gadget)
MessageRequester("Ошибка","Гаджет с номером ["+Str(gadget)+"] существует")
End
Else
ImageGadget(gadget,x,y,width,height,0,flag)
gif(smile)\gadget=gadget
gif(smile)\status_play=1
Debug gif(smile)\gadget
Debug gif(smile)\im_Height
Debug gif(smile)\im_Width
Debug gif(smile)\file_name
Debug gif(smile)\multiplication
Debug gif(smile)\status_play
EndIf
EndProcedure
Procedure next_frame()
For i=1 To count_smile
; узнаем включена анимация смайла
If gif(i)\status_play=1
If gif(i)\time_read=0
; узнаем отображенный кадр и задержку
tmp$=gif(i)\multiplication
For ii=1 To Len(tmp$)
txt$=Mid(tmp$,ii,1)
If txt$=">"
k=2
EndIf
If txt$=","
k=1
EndIf
If k=2
zaderzka$=text$
k=0
txt$=""
text$=""
If kader=gif(i)\getframes
; Debug "kartinka$ "+kartinka$
; Debug "zaderzka$ "+zaderzka$
gif(i)\delay=Val(zaderzka$)
gif(i)\time2=gif(i)\time2+1
gif(i)\time_read=1
gif(i)\im_frame=Val(kartinka$)
gif(i)\getframes=kader+1
SetGadgetState(gif(i)\gadget, ImageID(gif(i)\im_frame))
Break
Else
kader=kader+1
EndIf
EndIf
If k=1
kartinka$=text$
k=0
txt$=""
text$=""
EndIf
text$=text$+txt$
; Debug "kader "+Str(kader)
; Debug "gif(i)\getframes "+Str(gif(i)\getframes)
; Debug text$
Next ii
EndIf
If gif(i)\time_read=1
If gif(i)\time2=gif(i)\delay
; Debug Str(gif(i)\time2)+"="+Str(gif(i)\delay)
; устанавливаем картинку фрейма
If IsImage(gif(i)\im_frame)
SetGadgetState(gif(i)\gadget, ImageID(gif(i)\im_frame))
If gif(i)\getframes=gif(i)\count_frames
gif(i)\getframes=0
EndIf
Else
Debug "Изображение ["+Str(gif(i)\im_frame)+"] не инициализировано"
EndIf
gif(i)\time2=0
gif(i)\time_read=0
Else
; Debug Str(gif(i)\time2)+"<"+Str(gif(i)\delay)
gif(i)\time2=gif(i)\time2+1
EndIf
EndIf
; таймер отображения картинки
kader=0
; gif(i)\getframes=gif(i)\getframes+1
; Debug gif(i)\getframes
; Debug gif(i)\count_frames
; Debug "*****************"
EndIf
Next i
EndProcedure
load_im()
If OpenWindow(0, 0, 0, 700, 500, "Press ESC to quit", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
AddWindowTimer(0, 1, 70)
ani_ImageGadget(1,10,10,150,150,1,#PB_Image_Border )
ani_ImageGadget(2,10,40,150,150,30,#PB_Image_Border )
ani_ImageGadget(3,10,80,150,150,10,#PB_Image_Border )
ani_ImageGadget(4,10,120,150,150,2,#PB_Image_Border )
ani_ImageGadget(5,10,160,50,50,55,#PB_Image_Border )
; ImageGadget(1,50,50,50,50,ImageID(101))
; ButtonGadget(0,0,0,200,20,"открыть")
EndIf
next_frame()
next_frame()
; next_frame()
Repeat
Event = WaitWindowEvent()
gEvent = EventGadget()
If Event = #PB_Event_Timer And EventTimer() = 1
next_frame()
EndIf
Until Event=#PB_Event_CloseWindow
Как то слишком сложно для анимирования 5 смайликов из аси О_о Надеюсь, есть что попроще. Тут еще присутствует код создания окна винды, ну думаю в поймете. |
3.05.2013 / 20:20 | | usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| JUST_EVIL, нда уж) в такое количество кода у меня игра таблетки на мидлет паскале вместилась)
|
3.05.2013 / 20:22 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| usb_device, ну тут просто он вначале вырезает из картинки, а потом анимирует, но да, согласен, слишком много))
|
4.05.2013 / 18:27 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| Знаю, что всем пофиг, но я нашел две заветные команды для загрузки и вывода картинки :ура: CatchImage(1,?Metka1, ?Metka2-?Metka1) ; Загружаем рисунок из памяти
ImageGadget(2,40,20,32,32, ImageID(1) ) ; Отображаем его
Бесит, что везде вся инфа только на инглише(( Изменено JUST_EVIL (4.05 / 18:30) (всего 1 раз) |
4.05.2013 / 18:48 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| JUST_EVIL, мне не пофиг, давно присматривался, всё хотел начать программировать... Ты напомнил, вчера посмотрел примеры 3D - офигел... Даже загорелся идеей __________________
わからない!! |
4.05.2013 / 18:52 | | JUST_EVIL Пользователь Сейчас: Offline
Регистрация: 30.04.2011
| ВитаминКО, а у меня 3D примеры те не запустились) Интересно бы глянуть)
|
<< 1 ... 3 4 5 6 7 ... 11 >> Всего сообщений: 110 Фильтровать сообщения Поиск по теме Файлы топика (2)
|