|
08.02.2011, 22:17
|
#46
|
AnyKey`щик
Регистрация: 18.10.2009
Сообщений: 6
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Всем здрасьте.
Собственно, всё очень просто - не отображаются русские буквы. Совсем. Делаю вроде всё, как положено (самый простой пример):
Global Font:TImageFont
Graphics 800, 600
Font = LoadImageFont( "Arial", 30 )
SetImageFont( Font )
Repeat
DrawText( "Текст.", 400, 300 )
Flip
Cls
Until AppTerminate()
В результате получаю лишь точку на экране, все русские буквы отсутствуют. Пробовал прописывать шрифт и как ArialCyr, и как Airal.ttf - без разницы. То же самое и с шрифтами, скачанными из интернета, и с остальными системными.
Прошу помочь. И, если где-то на форуме есть решение, просьба кинуть линк - поиск не помог, проблема обсуждалась не раз, но либо так и не была решена, либо была решена на Blitz3d, а это не то.
|
(Offline)
|
|
08.02.2011, 22:31
|
#47
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Текст надо в Юникод передавать.
__________________
|
(Offline)
|
|
08.02.2011, 22:33
|
#48
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Добавь
Import brl.FreeTypeFont
в начале
"Arial" измени на "Arial.ttf" и кинь шрифт в папку с проектом.
__________________
kali surgeon
|
(Online)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.02.2011, 23:08
|
#49
|
AnyKey`щик
Регистрация: 18.10.2009
Сообщений: 6
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
baton4ik
Спасибо, помогло. Теперь будем экспериментировать на скачанных шрифтах...
|
(Offline)
|
|
19.02.2011, 20:47
|
#50
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Суперстрикт рулит! ^^ Это так, вопль души *убежал дальше копать туториалы по работе с пользовательскими типами*
|
(Offline)
|
|
19.02.2011, 20:57
|
#51
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Вот, вопрос, можете объяснить, в чем разница между методом (Method) и функцией (Function) внутри описания пользовательского типа?
|
(Offline)
|
|
19.02.2011, 21:44
|
#52
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Метод работает непосредственно с объектом типа, от которого было обращение
т.к.
...
Method GetSave()
Return Save
End Method
...
map1.GetSave()
map2.GetSave()
|
Так map1 вернет свой map1.Save, а map2 вернет свой map2.Save.
Функции внутри типов ничем не отличаются от функций снаружи типов, кроме того что эти функции можно вызвать от типа(вроде TMap.MyFunc() или map1.MyFunc())
Она НЕ ДАЕТ доступа к переменным внутри типа, тоесть придется писать что-то вроде
Function Create()
t.TMap=New TMap
t.Save=100500
Return t
End Function
|
Удобно использовать для функций создания и деструкта элемента типа. Для остального - лучче методы
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2011, 21:55
|
#53
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Спасибо большое То что нужно
|
(Offline)
|
|
19.02.2011, 22:03
|
#54
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Грубо говоря, функции - глобальные методы.
__________________
kali surgeon
|
(Online)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2011, 23:37
|
#55
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Функции внутри типа это обычные функции, только они ещё имеют быстрый доступ к внутренним глобальным переменным внутри типа.
Type Foo Global Bar:Int = 0 Function IncBar() Bar:+1 End Function EndType Foo.Bar = 1 Foo.IncBar() Foo.IncBar() Print Foo.Bar 'выдаёт 3
Методы вызываются непосредственно для экземпляра типа.
Псевдокод:
Type Мужык Field x:int = 0 Field y:int = 0 Method ИдиВверх() y:-1 EndMethod Method ИдиВниз() y:+1 EndMethod Method ИдиВЛево() x:-1 EndMethod Method ИдиВПраво() x:+1 EndMethod EndType Local SuperHero:Мужык = New Мужык SuperHero.ИдиВниз() SuperHero.ИдиВниз() SuperHero.ИдиВниз() SuperHero.ИдиВЛево() SuperHero.ИдиВЛево() Print SuperHero.x + " , " + SuperHero.y ' выдаёт -2 , 3
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.02.2011, 00:51
|
#56
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Кажется разобрался. Всем спасибо. В итоге получается даже удобнее, чем в блитце
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.02.2011, 09:43
|
#57
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Пытаюсь писать свой пользовательский тип с функциями и методами. При компиляции, если я обратился к функции CreateBattleCharacter, выдает Attempt to access field or method of Null object на строчке Если не трудно, подкиньте идею, где может быть косяк. Сам код:
Global bchar_list:TList = New TList
Global bchar_list_count:Int
Type TBattleCharacter
Field model:Int, anim_mesh:Int
Field selected:Byte
Field name:String
Field level:Int, life:Int, life_max:Int
' Создание персонажа
Function CreateBattleCharacter:TBattleCharacter(variant:String, selected:Byte, level:Int, life:Int)
Select variant
Case "player"
Local bchar:TBattleCharacter = New TBattleCharacter
' Определение переменных
bchar.selected = selected
bchar.level = level
' Определение постоянных
bchar.name = variant
' Определение параметров
bchar.life_max = 60 + bchar.level * 27
bchar.life = life
If bchar.life > bchar.life_max
bchar.life = bchar.life_max
ElseIf bchar.life < 1
bchar.life = 1
EndIf
' Загрузка моделей
bchar.model = xCreateCube()
xScaleMesh bchar.model, 5, 14, 5
xEntityAddBoxShape bchar.model, 10
bchar_list.AddLast bchar
bchar_list_count:+1
End Select
End Function
' Обработка персонажа
Method Update()
If selected = 1 Then MouseLook(model)
End Method
End Type
End
|
(Offline)
|
|
20.02.2011, 10:21
|
#58
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
bchar_list = CreateList()
И лучше сделай не глобальный список, а глобальную переменную типа для него:
Type TBattleCharacter
Global list:TList = CreateList()
'...
TBattleCharacter.list.AddLast bchar
'...
__________________
kali surgeon
|
(Online)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.02.2011, 10:42
|
#59
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от baton4ik
bchar_list = CreateList()
И лучше сделай не глобальный список, а глобальную переменную типа для него:
Type TBattleCharacter
Global list:TList = CreateList()
'...
TBattleCharacter.list.AddLast bchar
'...
|
Спасибо, помог второй вариант
|
(Offline)
|
|
20.02.2011, 17:25
|
#60
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Правда ли, что использование описания переменной в пределах пользовательского типа называется "статичной переменной" , так же как и функция, описанная в этих пределах именуется "статичной функцией"? От куда такая терминология сложилась? Еще вопрос: можно ли использовать статичные константы в типе и другие типы в типе?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:10.
|