Дневник начинающего pixi-программиста
Posted: Fri Apr 16, 2010 8:31 pm
Привет всему pixi-сообществу!
Решил написать на pixilang свою первую программу, для своего Dingoo A320 (хотя она без труда пойдет и на любой платформе).
Я пытаюсь реализовать оболочку для проссмотра комиксов и манги.
В первую очередь мой вьюер должен облегчить просмотр крупных изображений и свести до минимума нажатие клавиш при скроллировании, которое будет выполняться автоматически (возможно с расстановкой пауз и или различной скоротью прокрутки).
Во вторых основа любой манги -это текстовые диалоги персонажей, которые даже на экранах с маленкой диагональю не перекрывали бы друг-друга и всплывали взависимоти от времени, скроллировались, подстраивались под цветовое окружения фона, налагались разные шрифтовые спецэффекты.
Ну и менее важные второстепенные функции: добавление фоновой музыки, звуковых спецэффектов; возможность добавления графических спецэффктов (динамической анимации конкретных спрайтов, погодных условий (снег, дождь, облака, вода, молнии ...); акцентирование внимания путем масштабирования или затемнения определенных деталей); интерактивное взаимодействие с пользователем.
Сначала я хотел сделать простое описание для создания сценариев проссмотра комиксов. Но ручной ввод различных данных координатных точек и т.п. -процесс довльно нудный, так что в итоге я решил перепоручить его pixi-программе а не пользователю. Тут же столкнулся с проблемой дальнейшего выбора: создать кроме самого вьюера и отдельный редактор который будет экспортировать полученные данные во внешний файл (хотя возможно и сразу создавать готовую
исполняемую pixi-прогу). Или же может лучше сделать один универсальный комбайн и для проссмотра и для редактирования, усложнив тем самым весь общий код?
Небольшой набросочек по перемещению:
Когда определюсь со способом экспорта данных, добавлю сохранение по кноке текущих координатов и разные действия между ними.
Ну и всяких дополнительных функций например чтобы по нажатию кнопи 'start[Enter]' автоматически переместиться от левой сторны изображения до самого края в право (или до тех пор пока не нажмут другую клавишу) надо запустить подобную подпрограмму
Ну и эскпорт обработанных данных во внешний файл(или готовую программу) сделаю как то так:
Короче задумок и способов реализации данного проэкта очень много. Но все больше возникает вяких вопросов, ответ на который мне как новичку найти нелегко. Даже такой вопрос как выбор
удобного пользовательского интерфейса для малокнопочного и безмышиного девайса, может надолго поставить в тупик.
Так что в дальнейшем буду пытаться решать подобные задачи и по мере реализации програмки сюда отписываться.
P.S Рад выслушать здесь любые советы, мнения, даже самые негативные
Решил написать на pixilang свою первую программу, для своего Dingoo A320 (хотя она без труда пойдет и на любой платформе).
Я пытаюсь реализовать оболочку для проссмотра комиксов и манги.
В первую очередь мой вьюер должен облегчить просмотр крупных изображений и свести до минимума нажатие клавиш при скроллировании, которое будет выполняться автоматически (возможно с расстановкой пауз и или различной скоротью прокрутки).
Во вторых основа любой манги -это текстовые диалоги персонажей, которые даже на экранах с маленкой диагональю не перекрывали бы друг-друга и всплывали взависимоти от времени, скроллировались, подстраивались под цветовое окружения фона, налагались разные шрифтовые спецэффекты.
Ну и менее важные второстепенные функции: добавление фоновой музыки, звуковых спецэффектов; возможность добавления графических спецэффктов (динамической анимации конкретных спрайтов, погодных условий (снег, дождь, облака, вода, молнии ...); акцентирование внимания путем масштабирования или затемнения определенных деталей); интерактивное взаимодействие с пользователем.
Сначала я хотел сделать простое описание для создания сценариев проссмотра комиксов. Но ручной ввод различных данных координатных точек и т.п. -процесс довльно нудный, так что в итоге я решил перепоручить его pixi-программе а не пользователю. Тут же столкнулся с проблемой дальнейшего выбора: создать кроме самого вьюера и отдельный редактор который будет экспортировать полученные данные во внешний файл (хотя возможно и сразу создавать готовую
исполняемую pixi-прогу). Или же может лучше сделать один универсальный комбайн и для проссмотра и для редактирования, усложнив тем самым весь общий код?
Небольшой набросочек по перемещению:
Code: Select all
file = "1.gif"
image=load_pixi(file) //загрузить в pixi-контейнер данные манги
screen_xsize=get_pixi_xsize(0) //whith dingoo=320
screen_ysize=get_pixi_ysize(0) //hight dingoo=240
manga_xsize=get_pixi_xsize(image)
manga_ysize=get_pixi_xsize(image)
x=(-screen_xsize + manga_xsize)/2 //top-left (x-dot)-(320/2) //координаты x-точки верхнего левого экрана манги
y=(-screen_ysize + manga_ysize)/2 //top-left (y-dot)-(240/2) //координаты y-точки верхнего левого экрана манги
start:
move
pixi(image,x,y)
frame
go start
/////подпрограммы///
move: //реакция на клавиши курсора
button_down_action = {
key = ghk
if ($key=264){y+5} //вместо 5 поставлю динамическую переменную изменения скорости перемещения
if (key=265){y-5}
if (key=266 & x<(manga_xsize-screen_xsize)/2){x+5} //ограничение при перемещении вправо за пределы манги
if (key=267 & x>-(manga_xsize-screen_xsize)/2){x-5} // то же в левую строну
}
handle_hard_keys( button_down_action, 0 )
frame
/* dingo_keys:
up=264 down=265 left=266 right=267
x=32 y=256[F1] a=257[F2] b=258[F3]
L=9[Tab] R=127 start=10[enter] select=27[Esc if "noesc(1)"]
hold=19 poweroff=none*/
ret
Ну и всяких дополнительных функций например чтобы по нажатию кнопи 'start[Enter]' автоматически переместиться от левой сторны изображения до самого края в право (или до тех пор пока не нажмут другую клавишу) надо запустить подобную подпрограмму
Code: Select all
m1:
handle_hard_keys( {key = get_hard_keys}, 0)
if ($key=10 & x>-(manga_xsize/2-screen_xsize/2)) {x-1}
ret
Code: Select all
export_data="x1,y1,x2,y2,........xn,yn"
f=fopen ("dataname.txt", "w,t")
p = 0
size = get_string_size( export_data )
while( p < size )
{
fputc( text[ p ], f )
p + 1
}
fclose( f )
удобного пользовательского интерфейса для малокнопочного и безмышиного девайса, может надолго поставить в тупик.
Так что в дальнейшем буду пытаться решать подобные задачи и по мере реализации програмки сюда отписываться.
P.S Рад выслушать здесь любые советы, мнения, даже самые негативные