本页面需要全屏使用,本页面仅为节选旧代码片段
Copyright © 2008 - 2020 SNANG. All Rights Reserved.
error:您的设备不支持本功能
FAQ:可能的原因
1:由于网络原因,系统未完成加载
2:由于您设备不支持或禁用了系统必要的功能
SNBGST.os编程说明
本项目由 SNANG山岚幽阳 团队开发, 官网 www.snang.cc
目录:
第一章 基本程序格式
第1节 hello world
第2节 自循环程序
第二章 基本函数目录
第1节 绘制基础窗口(标题,内容颜色)
第2节 把窗口置于最顶层()
第3节 鼠标判断(X,Y,W,H)
第4节 把窗口映射到输出[画布转图片]
第5节 更新窗口位置与大小(是否完全更新[0:否,1:是])
第6节 设置字体(大小,左中右对齐[left,center,right],上中下对齐[top,middle,bottom],字体)
第7节 设置颜色(填充颜色,描边颜色)
第8节 绘制文本(内容,X,Y,是否填充文本[0:描边,1:填充])
第9节 绘制矩形(X,Y,W,H,是否填充矩形[0:清除,1:填充,2:描边])
第三章 系统原理
第四章 扩展函数目录
附录1 变量占用表
附录2 系统键值表
SNBGST.os编程说明
第一章 基本程序格式
第1节 hello world
var name = "SNANG_SNBGST_deom"; //设置程序包名
var x=0,y=0,w=300,h=200; //确定窗体初始化位置与大小
function main(){ //程序主函数
newWindow("你好SNBGST.os"); //创建名为"你好SNBGST.os"的基本窗体
text("Hello World",0,24+18); //打印绘制一段文本"Hello World"
setU_I(); //将程序界面窗口映射到输出
} //程序结束
以上就是一个最基本的"hello world"程序了, 程序源代码(后文简称"源码")为什么长这样我们留到后文分析, 这里我们需要注意到几点是:
1.程序包名每个程序应唯一, 程序包名只能包含"10个数字"和"26个字母"及"英文下划线", 其中数字不能作为开头, 我们推荐的程序包名格式为"作者_程序名".
2.主函数main()在系统每3个主循环后触发一次, 一般足够普通程序运行, 无需再自行在程序中设置循环保证程序不退出, 如果为游戏类应用需要自行设置循环的请参见本章第2节的程序.
3.本系统中使用语言为简化版JavaScript, 语法风格与JavaScript语言完全一致, 只要您有一定JavaScript语言基础, 均可参与开发本系统程序(请参见我们官网"www.snang.cc").
第2节 自循环程序
上节说到程序主函数在系统每循环执行3次后将触发一次, 这样就造成了需要自行循环以便执行的程序如游戏类应用无法运行. 为了避免这个问题, 我们为主函数传递了一个参数, 你可以接收这个参数来拒绝主函数之后的触发.方法示例代码如下:
var name = "SNANG_SNBGST_deom";
var x=0,y=0,w=300,h=200;
function main(){
oneself_cycle
= true; //说明程序自身将包含循环无需后续触发
cycle(); //前往循环函数循环
}
function cycle(){ //用来循环执行的函数
newWindow("你好SNBGST.os");
text("当前时间: "+datas.t,0,24+18); //绘制输出格式化的时间
setU_I();
setTimeout("cycle()",1000); //每秒循环1次这个函数
}
请不要过于频繁的绘制这样会造成系统响应过慢, 系统使用的虚拟平台的帧率最高无法超过60, 所以您程序帧率过高也只会造成帧率丢失,一般而言您程序帧率最高设置到20就足够了, 我们建议运行在这个系统的程序帧率应在16左右.
这里使用到了一个系统变量"datas.t", 这个变量里保存了已经格式化好了的时间, 我们建议您直接使用它. 同时系统还提供了一系列全局变量,如下:
鼠标坐标(触屏设备上的主触点): datas.x,datas.y
触屏设备上的辅助触点: datas.w,datas.h
按下的触点数量(无触屏设备时值始终为0): datas.l
按下的按键数量(参考用数据,不可靠): datas.m
按下的按键的键值(键值表参见附录): datas.k,datas.e
系统的控制数据(核心数据,不要修改): datas.i
系统当前的刷新率: datas.f
格式化的当前时间: datas.t
屏幕分辨率: datas.ww,datas.hh
当前最顶层的程序名: datas.o
data_s系列: 由data_s.a到data_s.z其中data_s.i(不含)之前为程序预留全局变量,data_s.i(含)之后部分可供编程者使用
控制程序主函数触发: whileMesssage(内部事件使用,不要修改)和oneself_cycle
用户程序开头必须定义部分: name(程序包名),x,y(窗口初始化位置),w,h(窗口初始化大小)这5个全局变量由用户自行定义,其中程序包名定义后不可修改
第二章 基本函数目录
第1节 绘制基础窗口(标题,内容颜色)
函数:newWindow()
参数:texts="hello world",color="#000000"
说明:
函数共提供2个参数,其中0个必须定义,2个可选.
第1个参数为创建的窗口名,默认为"hello world"
第2个参数为窗体内容部分的颜色,默认为黑色
非全屏程序需调用此函数创建窗体,程序全屏时无需调用此函数,窗体标题栏部分占用24px在程序绘制内容时应从顶部减去.
第2节 把窗口置于最顶层()
函数:onWindow()
参数:无
说明:
函数共提供0个参数,其中0个必须定义,0个可选.
把当前程序置于最顶层绘制,这个函数一般无需编程者调用,已内置于newWindow()函数中.
第3节 鼠标判断(X,Y,W,H)
函数:ismouseon()
参数:xx,yy,ww,hh
说明:
函数共提供4个参数,其中4个必须定义,0个可选.
这个函数判断是否有鼠标或触点位于指定区域上方
其中参数x,y为屏幕左上角起到指定区域左上角的x,y坐标, w,h指指定区域的长宽
第4节 把窗口映射到输出[画布转图片]
函数:setU_I()
参数:无
说明:
函数共提供0个参数,其中0个必须定义,0个可选.
这个函数把绘制完成的窗口转换为输出到屏幕使用的图片格式
第5节 更新窗口位置与大小(是否完全更新)
函数:setWindow()
参数:i=0[0:否,1:是]
说明:
函数共提供1个参数,其中0个必须定义,1个可选.
这个函数用来更新窗口位置,用于修改了窗口坐标或长宽后.如果只修改了窗口位置,则无需完全更新,如果修改了窗口坐标同时不希望窗口被缩放显示,则应完全更新,请注意:完全更新将清空画布.
第6节 设置字体(大小,左中右对齐,上中下对齐,字体)
函数:setText()
参数:px="16px",A="left"[left,center,right],B="alphabetic"[alphabetic,top,middle,bottom],font="Arial"
说明:
函数共提供4个参数,其中0个必须定义,4个可选.
这个函数用来设置字体,其中:
参数px为字体大小,设置时应包括单位px
参数A为横向对齐方式,参数B为纵向对齐方式
参数font为字体
第7节 设置颜色(填充颜色,描边颜色)
函数:setColor()
参数:fill="#000000",stroke="#999999"
说明:
函数共提供2个参数,其中0个必须定义,2个可选.
第1个参数为填充颜色,默认为黑色,
第2个参数为描边颜色,默认为浅灰.
这个函数用来设置文字或绘图的颜色,一般只需设置第一个填充颜色即可.
第8节 绘制文本(内容,X,Y,是否填充文本)
函数:text()
参数:texts,xx=0,yy=0,i=1[0:描边,1:填充]
说明:
函数共提供4个参数,其中1个必须定义,3个可选.
第1个为绘制文本的内容,如果绘制"\"请使用"\\"转义,这里转义与JavaScript一样,但换行等均无效(显示效果为空格)
第2,3个参数为绘制文本的坐标,默认为0,0点,其中如果您使用了窗体newWindow()函数,请注意窗体已经占用了Y轴的前24个像素.
第4个参数一般使用极少,用来设置文字是实心或是空心.
第9节 绘制矩形(X,Y,W,H,是否填充矩形)
函数:rect()
参数:xx,yy,ww=1,hh=1,i=1[0:清除,1:填充,2:描边]
说明:
函数共提供5个参数,其中2个必须定义,3个可选.
这里参数X,Y,W,H与ismouseon()函数相同,当只填写前2参数时默认只绘制对应1像素点.
第5个参数有3个可选值0:清除,1:填充,2:描边,清除是用来清除一个矩形区域的所有像素点,填充绘制实心矩形,描边绘制空心矩形.
第三章 系统原理
第四章 扩展函数目录
附录1 变量占用表
附录2 系统键值表