forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Помогите с LoadAnimImage (http://forum.boolean.name/showthread.php?t=15883)

mauNgerS 21.11.2011 21:39

Ответ: Помогите с LoadAnimImage
 
В фотошопе слепи картинку без всяких разделяющих линий.

Okay 21.11.2011 21:57

Ответ: Помогите с LoadAnimImage
 
Так. Хорошо. Всем спасибо)

Okay 21.11.2011 22:10

Ответ: Помогите с LoadAnimImage
 
Ах да. Еще вопрос. Вообщем есть изображение. Им можно управлять стрелочками.
Суть вопроса: Какую функцию использовать, чтобы когда нажимаю допустим кнопку. старое изображение удалялось, новое появлялось. Далее когда отпускаю кнопку, появляется опять старое.

St_AnGer 21.11.2011 22:15

Ответ: Помогите с LoadAnimImage
 
рисовать нужное изображение при нажатии клавиши, а при НЕ нажатии - рисовать другое. Что то вроде такого

Код:

If KeyDown(27)
    DrawImage img1, 10, 10
Else
    DrawImage img2, 10, 10
End If


Okay 21.11.2011 22:24

Ответ: Помогите с LoadAnimImage
 
Код:

While Not KeyDown(1)


Cls

DrawImage mario,xm,ym
DrawImage pein,x,y
DrawImage cur,MouseX(),MouseY()


If KeyDown(200) Then
 y = y - 1
EndIf

If KeyDown(208) Then
 y = y + 1
EndIf

If KeyDown(203) Then

 x = x - 1
EndIf

If KeyDown(205) Then
 x = x + 1
EndIf

В действиях пробовал вставлять freeimage. Выдает ошибку.

St_AnGer 21.11.2011 22:28

Ответ: Помогите с LoadAnimImage
 
FreeImage выдаёт ошибку потому что ты удаляешь изображение в цикле, т.е. не один раз. И зачем удалять? Рисуй просто как я сказал (когда надо одну, а когда ненадо - на её же месте другую).

Okay 21.11.2011 22:32

Ответ: Помогите с LoadAnimImage
 
Смотри. Изображение уже нарисовано. То есть если я нажму кнопку, он нарисует еще одно изображение.

Okay 21.11.2011 22:33

Ответ: Помогите с LoadAnimImage
 

Okay 21.11.2011 22:35

Ответ: Помогите с LoadAnimImage
 
А что если сделать так же по кадрам? То есть запускать определенный кадр в то или инное действие? если я нажму кнопку, он будет мне показывать другой кадр. Можно ли так?

St_AnGer 21.11.2011 22:35

Ответ: Помогите с LoadAnimImage
 
эмм... Я не понял сразу о чём ты. Делай CLS вначале цикла. Должно помочь.

упд. Моя невнимательность, клс есть.

Okay 21.11.2011 22:36

Ответ: Помогите с LoadAnimImage
 
Код:

Graphics 800,600
SetBuffer BackBuffer()


AppTitle "The Big Fighter"

Global x = 300
Global y = 300
Global xm = 400
Global ym = 400
Global frmSparks, tmrSparks
Global cadr = 0

Global pein = LoadImage("pein.bmp")
Global mario = LoadImage("mario.bmp")
Global cur = LoadImage("cursor.bmp")
Global pein_run = LoadAnimImage("pein_run.bmp",65,65,cadr,3)

MaskImage mario,0,0,0
MaskImage pein,0,0,0


While Not KeyDown(1)


Cls

DrawImage mario,xm,ym
DrawImage pein,x,y
DrawImage cur,MouseX(),MouseY()


If KeyDown(200) Then
 y = y - 1
EndIf

If KeyDown(208) Then
 y = y + 1
EndIf

If KeyDown(203) Then

 x = x - 1
EndIf

If KeyDown(205) Then
 x = x + 1
EndIf


HidePointer


Flip
Wend

End


Okay 21.11.2011 22:45

Ответ: Помогите с LoadAnimImage
 
Ok. Попробую с кадрами поработать чуть чуть. Так если что не получится, напишу :)

St_AnGer 21.11.2011 23:21

Ответ: Помогите с LoadAnimImage
 
Цитата:

Сообщение от Okay (Сообщение 210540)
Смотри. Изображение уже нарисовано. То есть если я нажму кнопку, он нарисует еще одно изображение.

при том коде что ты написал, если ты нажмёшь кнопку 200 (вверх) - он не нарисует новое, а сдвинет твоё изображение на экране вверх (соответственно уменьшив координату Y). С другими кнопками соответственно их условию работы. Не пойму сути проблемы, твой код рабочий (и работает как надо вроде бы).

По LoadAnimImage - тут вроде всё легко.
1) Грузишь последовательность кадров:
Код:

pein_run = LoadAnimImage("pein_run.bmp", 65, 65, [номер первого кадра], [флаги изображения])
2) вводишь какую то переменную считающую кадры изображения (например frame% ) и переменную считающую интервал смены кадра (допустим frameTime% );
3) в цикле отображаешь твоё изображение с помощью DrawImage (допустим кадров было 3):

Код:

If MilliSecs() > frameTime + 100 Then
    frameTime = MilliSecs()
    frame = ( frame + 1 ) Mod 3; 3 - количество кадров
End If
DrawImage pein_run, x, y, frame

Всё должно прекрасно работать. Помоему это есть в базовых примерах блица. Сори если код немного не верный будет - с телефона пишу уже засыпая.

Okay 22.11.2011 00:01

Ответ: Помогите с LoadAnimImage
 
Сделал через условие IF. Только теперь не знаю как потом возвратить функцию обратно в 0.

Okay 22.11.2011 00:32

Ответ: Помогите с LoadAnimImage
 
Цитата:

Сообщение от Okay (Сообщение 210564)
Сделал через условие IF. Только теперь не знаю как потом возвратить функцию обратно в 0.

Пацаны вообще ребята!
Получилось через else Good nice ^_^ :)
Выражаю огромное спасибо всем, кто помог мне в освоение анимации и не много логики)


Часовой пояс GMT +4, время: 00:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot