Вниз  PureBasic
- 3.05.2013 / 12:12
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
Кстати 3d вроде полноценное
- 3.05.2013 / 16:06
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
JUST_EVIL, начинаем прогить :gg:
__________________
 わからない!!
- 3.05.2013 / 16:17
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
ВитаминКО, я уже два дня им живу) Язык легкий очень, одно удовольствие писать на нем.
Только с библиотеками еще не особо разобрался.
- 3.05.2013 / 16:21
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
JUST_EVIL, разберешься)
__________________
 わからない!!
- 3.05.2013 / 20:00
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
  1. ; Автор - cherri123
  2. ; http://purebasic.info/phpBB2/viewtopic.php?t=1153
  3.  
  4. Structure GIF
  5.     gadget.w
  6.     file_name.s
  7.     count_frames.w
  8.     status_play.w
  9.     getframes.w
  10.     im_frame.w
  11.     multiplication.s
  12.     time_read.w
  13.     time2.w
  14.     delay.w
  15.     im_Height.w
  16.     im_Width.w
  17.     px.w
  18.     py.w
  19. EndStructure
  20.  
  21. Global count_smile.w
  22. Global Dim gif.gif(10000)
  23. Global Dim  Delay_(10000,10000)
  24.  
  25. ; NewList
  26.  
  27. UsePNGImageDecoder()
  28. ; im_Height=ImageHeight(#Image)
  29. ; im_Width=ImageWidth(#Image)
  30. Procedure load_im()
  31. If ReadFile(0,"ani_smiles\animate.bin")
  32. ; формат файла animate.bin
  33. ; Описание смайла #1
  34. ; b | Число кадров в png файле
  35. ; b | Число кадров в анимации смайла
  36. ;   |   Кадр анимации #1
  37. ; b |     Номер кадра в png-файле
  38. ; b |     Длительность кадра в 0.1 секунды (короткие кадры уже отброшены)
  39. ;   |   Кадр анимации #2
  40. ; b |     ...
  41. ;
  42. ; Описание смайла #2
  43.  
  44. ; Debug "Длина файла ["+Str(Lof(0))+"]"
  45. count_smile=ReadAsciiCharacter(0)
  46. ; Debug "Количество анимированных фалов в формате PNG ["+Str(count_smile)+"]"
  47. ; Debug "_____________________________"
  48. ; ReDim Delay_(count_smile,10000)
  49. Repeat
  50. st=st+1
  51. ; Debug "=============== № файла ["+Str(st)+"] ================="
  52. ; имя файла анимации
  53. gif(st)\file_name="ani_smiles\"+Str(st)+".png"
  54. If LoadImage(st, gif(st)\file_name)
  55.  ; число кадров в файле
  56.  Chislo_kadrov_PNG=ReadAsciiCharacter(0)
  57.  
  58. ;   Debug "Число кадров в png файле ["+Str(Chislo_kadrov_PNG)+"]"
  59.  im_Height=ImageHeight(st)
  60.  im_Width=ImageWidth(st)
  61.  
  62.  ; высота и ширина отображаемого кадра
  63.  gif(st)\im_Height=im_Height
  64.  gif(st)\im_Width=im_Width/Chislo_kadrov_PNG
  65.  
  66.  For i=0 To Chislo_kadrov_PNG-1
  67.       no_image2$=Str(st*10)+Str(i)
  68.       x=gif(st)\im_Width*i
  69.       y=0
  70.       Width=gif(st)\im_Width
  71.       Height=gif(st)\im_Height
  72. ;        Debug "*****"+Str(i)+"*****"
  73. ;        Debug x
  74. ;        Debug y
  75. ;        Debug Width
  76. ;        Debug Height
  77. ;        Debug "*******************"
  78.       result=GrabImage(st, Val(no_image2$),x, y, Width, Height)
  79. ;        Debug "no_image2$ "+no_image2$;Str(result)
  80.  Next i
  81.  
  82.  
  83.  ; число кадров в анимации смайла  
  84.  Chislo_kadrov_anim=ReadAsciiCharacter(0)
  85.  gif(st)\count_frames= Chislo_kadrov_anim
  86. ;   Debug "Число кадров в анимации смайла ["+Str(Chislo_kadrov_anim)+"]"
  87.  
  88.  ; кадры в анимации  
  89.    For i=1 To Chislo_kadrov_anim
  90.      no_frame_in_png=ReadAsciiCharacter(0)
  91.      delay_frame=ReadAsciiCharacter(0)
  92. ;       Debug "Номер кадра в png-файле >> ["+Str(no_frame_in_png)+"]"
  93. ;       Debug "Длительность кадра в 0.1 секунды >> ["+Str(delay_frame)+"]"
  94.  
  95.      tmp$=tmp$+Str(st*10)+Str(no_frame_in_png)+","+Str(delay_frame)+">"
  96.  
  97.    Next i
  98.    gif(st)\multiplication=tmp$
  99. ;     Debug "Мультипликация файла >> "+tmp$
  100.    tmp$=""
  101. EndIf
  102. ; Debug "===================================="
  103. If  Eof(0)
  104. q=1
  105. EndIf
  106. Until q=1
  107.  
  108. EndIf
  109. EndProcedure
  110.  
  111. Procedure ani_ImageGadget(gadget,x,y,width,height,smile,flag)
  112. If IsGadget(gadget)
  113.  MessageRequester("Ошибка","Гаджет с номером ["+Str(gadget)+"] существует")
  114.  End
  115. Else
  116.  ImageGadget(gadget,x,y,width,height,0,flag)
  117.  gif(smile)\gadget=gadget
  118.  gif(smile)\status_play=1
  119.  
  120.  Debug gif(smile)\gadget
  121.  Debug gif(smile)\im_Height
  122.  Debug gif(smile)\im_Width
  123.  Debug gif(smile)\file_name
  124.  Debug gif(smile)\multiplication
  125.  Debug gif(smile)\status_play
  126. EndIf
  127. EndProcedure
  128.  
  129. Procedure next_frame()
  130. For i=1 To count_smile
  131. ; узнаем включена анимация смайла
  132.  If gif(i)\status_play=1
  133.  
  134.        If gif(i)\time_read=0
  135.          ; узнаем отображенный кадр и задержку
  136.            tmp$=gif(i)\multiplication
  137.  
  138.            For ii=1 To Len(tmp$)
  139.              txt$=Mid(tmp$,ii,1)
  140.                If txt$=">"
  141.                  k=2
  142.                EndIf
  143.                If txt$=","
  144.                  k=1
  145.                EndIf
  146.  
  147.                If k=2
  148.                  zaderzka$=text$
  149.                  k=0
  150.                  txt$=""
  151.                  text$=""
  152.                  If kader=gif(i)\getframes
  153. ;                     Debug "kartinka$ "+kartinka$
  154. ;                     Debug "zaderzka$ "+zaderzka$
  155.                    gif(i)\delay=Val(zaderzka$)
  156.                    gif(i)\time2=gif(i)\time2+1
  157.                    gif(i)\time_read=1
  158.                    gif(i)\im_frame=Val(kartinka$)
  159.                    gif(i)\getframes=kader+1
  160.                    SetGadgetState(gif(i)\gadget, ImageID(gif(i)\im_frame))
  161.  
  162.                    Break
  163.                  Else
  164.                    kader=kader+1
  165.                  EndIf
  166.                EndIf
  167.                If k=1
  168.                  kartinka$=text$
  169.                  k=0
  170.                  txt$=""
  171.                  text$=""
  172.                EndIf
  173.              text$=text$+txt$
  174. ;               Debug "kader "+Str(kader)
  175. ;               Debug "gif(i)\getframes "+Str(gif(i)\getframes)
  176.    ;           Debug text$
  177.            Next ii
  178.  
  179.        EndIf
  180.        If gif(i)\time_read=1
  181.            If gif(i)\time2=gif(i)\delay
  182. ;             Debug Str(gif(i)\time2)+"="+Str(gif(i)\delay)
  183.                ; устанавливаем картинку фрейма
  184.                If IsImage(gif(i)\im_frame)
  185.                  SetGadgetState(gif(i)\gadget, ImageID(gif(i)\im_frame))
  186.                      If gif(i)\getframes=gif(i)\count_frames
  187.                         gif(i)\getframes=0
  188.                      EndIf
  189.                Else
  190.                  Debug "Изображение ["+Str(gif(i)\im_frame)+"] не инициализировано"
  191.                EndIf
  192.                gif(i)\time2=0
  193.                gif(i)\time_read=0
  194.            Else
  195. ;                 Debug Str(gif(i)\time2)+"<"+Str(gif(i)\delay)
  196.                gif(i)\time2=gif(i)\time2+1
  197.            EndIf
  198.        EndIf
  199.    ; таймер отображения картинки
  200.  
  201.  
  202.    kader=0
  203. ;     gif(i)\getframes=gif(i)\getframes+1
  204.  
  205. ;     Debug gif(i)\getframes
  206. ;     Debug gif(i)\count_frames
  207. ;     Debug "*****************"
  208.  
  209.  
  210.  EndIf
  211. Next i
  212.  
  213. EndProcedure
  214. load_im()
  215.  
  216.  If OpenWindow(0, 0, 0, 700, 500, "Press ESC to quit", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
  217.  AddWindowTimer(0, 1, 70)
  218.  ani_ImageGadget(1,10,10,150,150,1,#PB_Image_Border )
  219.  ani_ImageGadget(2,10,40,150,150,30,#PB_Image_Border )
  220.  ani_ImageGadget(3,10,80,150,150,10,#PB_Image_Border )
  221.  ani_ImageGadget(4,10,120,150,150,2,#PB_Image_Border )
  222.  ani_ImageGadget(5,10,160,50,50,55,#PB_Image_Border )
  223. ; ImageGadget(1,50,50,50,50,ImageID(101))
  224. ;   ButtonGadget(0,0,0,200,20,"открыть")
  225.  EndIf
  226.  
  227.  next_frame()
  228.  next_frame()
  229. ;   next_frame()
  230.  Repeat
  231.  Event  = WaitWindowEvent()
  232.    gEvent = EventGadget()
  233.  
  234.    If Event = #PB_Event_Timer And EventTimer() = 1
  235.     next_frame()
  236.  
  237.    EndIf  
  238.  Until Event=#PB_Event_CloseWindow
Как то слишком сложно для анимирования 5 смайликов из аси О_о Надеюсь, есть что попроще. Тут еще присутствует код создания окна винды, ну думаю в поймете.
- 3.05.2013 / 20:20
usb_device
  Пользователь

usb_device 
Сейчас: Offline
JUST_EVIL, нда уж) в такое количество кода у меня игра таблетки на мидлет паскале вместилась)
- 3.05.2013 / 20:22
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
usb_device, ну тут просто он вначале вырезает из картинки, а потом анимирует, но да, согласен, слишком много))
- 4.05.2013 / 18:27
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
Знаю, что всем пофиг, но я нашел две заветные команды для загрузки и вывода картинки :ура:
  1. CatchImage(1,?Metka1, ?Metka2-?Metka1) ; Загружаем рисунок из памяти
  2. ImageGadget(2,40,20,32,32, ImageID(1) ) ; Отображаем его
Бесит, что везде вся инфа только на инглише((

Изменено JUST_EVIL (4.05 / 18:30) (всего 1 раз)
- 4.05.2013 / 18:48
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
JUST_EVIL, мне не пофиг, давно присматривался, всё хотел начать программировать... Ты напомнил, вчера посмотрел примеры 3D - офигел... Даже загорелся идеей :-D
__________________
 わからない!!
- 4.05.2013 / 18:52
JUST_EVIL
  Пользователь

JUST_EVIL 
Сейчас: Offline
ВитаминКО, а у меня 3D примеры те не запустились) Интересно бы глянуть)
Наверх  Всего сообщений: 110
Фильтровать сообщения
Поиск по теме
Файлы топика (2)