PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней


2D графика, и все связанное с ней

Сообщений 31 страница 39 из 39

31

lakomet написал(а):

нибудь использовали изображения SVG в пурике

Пока не приходилось.

lakomet написал(а):

нужен ли для этого WebGadget

Судя по всему, нет.

0

32

Пётр
У меня при использовании этого чуда, компилятор ругается, что строковым переменным присваивается числовое значение, при этом переменная выделена цветом ASM зарезервированного слова.При попытке изменить имена переменных вылетает мессага об ошибке pure.ASM :dontknow:

0

33

Да, странно как-то.
Там ещё и структур не хватает.

0

34

Пётр
Структуры и несколько функций, на третьей странице той темы, их нужно добавить в начало. В принципе код работает, файл создаётся, но при запуске у меня ноут виснет на несколько минут :(

0

35

lakomet написал(а):

но при запуске у меня ноут виснет на несколько минут

Как оказалось, эта прога требует очень много оперативки (у меня запросило больше 1.4 ГБ)!
http://s58.radikal.ru/i162/1008/7f/d90deba8685e.png

0

36

Помогите пожалуйста. Этот код у меня почему то не работает.

Код:
;Объявляем процедуры
Declare GestionClavier()
Declare AnimationSprite()
Declare DeplaceSprite()
Declare AfficheTexte()
 
Structure s_Sprite
 Direction.l ; Направление анимации
 ImageEnCours.l ; Указывает на образ анимации в настоящее время
 ImageMaxi.l ; Количество Maxi изображения для анимации, имеется 3 кадра направления
 TailleX.l ; X размерности каждого изображения
 TailleY.l ; Y размерность каждого изображения
 TempsEnCours.l ; Определяет длину "отображения" текущего изображения
 TempsMaxi.l ; Указывает максимальную длину "отображения" изображения до следующей
 x.l ; Позиция X спрайта
 y.l ; Позиция Y спрайта
 PasX.l ; Скорость перемещения по оси X
 PasY.l ; Скорость перемещения по оси Y
EndStructure
 
;Объявляемe 4 константы
Enumeration
 #AnimeHaut
 #AnimeDroite
 #AnimeBas
 #AnimeGauche
EndEnumeration
 
;Объявляем наш объект
Global Gus.s_Sprite
Gus\Direction = #AnimeDroite ; Выберем направление
Gus\ImageMaxi = 0 ; (0,1,2) 3 изображения
Gus\ImageEnCours = 0 ; На юге премьера изображения вместо анимации
Gus\TailleX = 100 ; Размер изображения
Gus\TailleY = 130 ; Размер изображения
Gus\TempsEnCours = ElapsedMilliseconds() ; Инициализирует длину "отображения" ImageEnCours
Gus\TempsMaxi = 150 ; скорость анимация
Gus\x = 200 ; Позиция X на экране
Gus\y = 200 ; Позиция X на экране
 
 
;Инициализация условий, необходимых для функционирования спрайты и открыть экран.
InitSprite()
;Инициализацию Управление с клавиатуры.
InitKeyboard()
;Открыть новый экран с характеристиками: Ширина, Высота и Глубина.
OpenScreen(800,600,32,"Tut Sprite")
;Включаем поддержку PNG
UsePNGImageDecoder()
 
;Загрузить в память спрайтов
If LoadSprite(0,"Player.png")=0
 MessageRequester("Ошибка","Не удалось загрузить спрайт Player.png",0)
 End ; Выход из программы
EndIf
 
Repeat
 ;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном.
 ;Невидимая часть буфера полностью заменяет видимой части.
 ExamineKeyboard()
 ;Очищает "текущего экрана с цветом, указанным.
ClearScreen(RGB(0, 0, 0))
 ;Управление клавиатурой
 GestionClavier()
 ;Вывод текста
 AfficheTexte()
 ;Анимация спрайта
 AnimationSprite()
 ;Смещение спрайт
 DeplaceSprite()
 
 
 If StartDrawing(SpriteOutput(0))
  Box(0, 0, 3000, 3000, RGB(255, 0, 155))
  EndIf
 
Until KeyboardPushed(#PB_Key_Escape)
 
End
 
Procedure AfficheTexte()
 StartDrawing(ScreenOutput())
 FrontColor($FFFFFF)
 BackColor($FF0000)
 DrawText(10,10,"Нажмите клавишу [Esc] для выхода")
 StopDrawing()
EndProcedure
 
Procedure GestionClavier()
 If ExamineKeyboard()
 ; Курсор вверх
 If KeyboardPushed(#PB_Key_Up)
 Gus\Direction=#AnimeHaut
 Gus\PasY = -1
 ; Курсор вправо
 ElseIf KeyboardPushed(#PB_Key_Right)
 Gus\Direction=#AnimeDroite
 Gus\PasX = 1
 ; Курсор вниз
 ElseIf KeyboardPushed(#PB_Key_Down)
 Gus\Direction=#AnimeBas
 Gus\PasY = 1
 ; Курсор влево
 ElseIf KeyboardPushed(#PB_Key_Left)
 Gus\Direction=#AnimeGauche
 Gus\PasX = -1
 EndIf
 EndIf
EndProcedure
 
Procedure AnimationSprite()
;Проверяет, длина Maxi "отображения" картинки
 If ElapsedMilliseconds()-Gus\TempsEnCours>Gus\TempsMaxi
 ; Устанавливает длину дисплей
 Gus\TempsEnCours=ElapsedMilliseconds()
 ; Увеличение текущего изображения, для отображения следующего.
 Gus\ImageEnCours + 1
 ; Петля
 If Gus\ImageEnCours>Gus\ImageMaxi
 Gus\ImageEnCours = 0
 EndIf
 EndIf
 ClipSprite(0,Gus\ImageEnCours * Gus\TailleX, Gus\Direction * Gus\TailleY, Gus\TailleX , Gus\TailleY)
EndProcedure
 
Procedure DeplaceSprite()
 Gus\x + Gus\PasX ; Добавляет X не текущее положение спрайта
 Gus\y + Gus\PasY ; Добавляет Y не текущее положение спрайта
 Gus\PasX = 0 ; Инициализирует шаг X
 Gus\PasY = 0 ; Инициализирует шаг Y
 
 ;Новое отоброжение спрайта
 DisplayTransparentSprite(0,Gus\x, Gus\y)
EndProcedure

0

37

Нужно поставить StopDrawing() чтоб закончить рисование!

Код:
 If StartDrawing(SpriteOutput(0))
   Box(0, 0, 3000, 3000, RGB(255, 0, 155))
   StopDrawing()
  EndIf

0

38

Всё равно не работает. А здесь у меня нет ошибки: 

Repeat
;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном.
;Невидимая часть буфера полностью заменяет видимой части.
ExamineKeyboard()
;Очищает "текущего экрана с цветом, указанным.
ClearScreen(RGB(0, 0, 0))
;Управление клавиатурой
GestionClavier()
;Вывод текста
AfficheTexte()
;Анимация спрайта
AnimationSprite()
;Смещение спрайт
DeplaceSprite()

0

39

Sergei написал(а):

;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном. ;Невидимая часть буфера полностью заменяет видимой части. ExamineKeyboard()

Функция ExamineKeyboard() делает совсем не то что написано в комментарии.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней