Решил написать на 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 Рад выслушать здесь любые советы, мнения, даже самые негативные