нибудь использовали изображения SVG в пурике
Пока не приходилось.
нужен ли для этого WebGadget
Судя по всему, нет.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней
нибудь использовали изображения SVG в пурике
Пока не приходилось.
нужен ли для этого WebGadget
Судя по всему, нет.
Пётр
У меня при использовании этого чуда, компилятор ругается, что строковым переменным присваивается числовое значение, при этом переменная выделена цветом ASM зарезервированного слова.При попытке изменить имена переменных вылетает мессага об ошибке pure.ASM 
Да, странно как-то.
Там ещё и структур не хватает.
Пётр
Структуры и несколько функций, на третьей странице той темы, их нужно добавить в начало. В принципе код работает, файл создаётся, но при запуске у меня ноут виснет на несколько минут 
но при запуске у меня ноут виснет на несколько минут
Как оказалось, эта прога требует очень много оперативки (у меня запросило больше 1.4 ГБ)!
http://s58.radikal.ru/i162/1008/7f/d90deba8685e.png
Помогите пожалуйста. Этот код у меня почему то не работает.
;Объявляем процедуры
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Нужно поставить StopDrawing() чтоб закончить рисование!
If StartDrawing(SpriteOutput(0)) Box(0, 0, 3000, 3000, RGB(255, 0, 155)) StopDrawing() EndIf
Всё равно не работает. А здесь у меня нет ошибки:
Repeat
;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном.
;Невидимая часть буфера полностью заменяет видимой части.
ExamineKeyboard()
;Очищает "текущего экрана с цветом, указанным.
ClearScreen(RGB(0, 0, 0))
;Управление клавиатурой
GestionClavier()
;Вывод текста
AfficheTexte()
;Анимация спрайта
AnimationSprite()
;Смещение спрайт
DeplaceSprite()
;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном. ;Невидимая часть буфера полностью заменяет видимой части. ExamineKeyboard()
Функция ExamineKeyboard() делает совсем не то что написано в комментарии.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней