2015年1月22日星期四

Corona手游教程之widget:Slider篇 - CoronaSDK中文研究站

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Corona手游教程之widget:Slider篇 - CoronaSDK中文研究站  阅读原文»

废话不多说,同Corona SDK其他widget一样,出于节约内存考虑定制化的slider也需要使用ImageSheet,并且不可以伸缩(scale)或通过.width或.height属性改变宽度和高度。

我们创建一个slider的基本分方法是:

widget.newSlider( options )

options的公共参数为:

  • id:(可选)一个赋予slider的可选字符串标识。默认值为"widget_slider"
  • x, y:(可选)origin的坐标
  • left, top:(可选)左上角的坐标
  • orientation:(可选)slider的朝向,可选值为"horizontal"和"vertical"。默认值为"horizontal"
  • width, height:slider的宽度和高度。(width用于horizontal,height用于vertical)
  • value:(可选)表示slider的初始百分比。默认为50,意味着slider手柄处于50%位置。
  • listener:(可选)这个函数用来处理slider的交互事件。在这个监听函数里,event.phase返回的值包括和touch一样的情况"began","moved“和”ended“。另外,你可以读取到slider的新值,event.value。

读写value的方式:

  • 属性:object.value
  • 方法:object:setValue()

可视化定制

slider widget使用ImageSheet来进行可视化定制。正如 下面例子所示,slider需要其中的5帧来装配:一个外框和一个内区。外框包括左帽子(红色),中间块(绿色),右边帽子(黄色)。内部区域(橘色)将延伸来填充当前取值的百分比。所有的外框的帧,和内区的帧,都应该共享宽度和高度。

还有一个把手帧,其大小可以不同于其他帧。注意,所有的slider控件,对于把手在中间区域可以拖拽的边界都有限制。对于可视化定制,把手 将会停在它中心坐标到达中间内区的两边。对于一个水平slider,把手应该停在内区左右边界。同样的规则也适用于垂直slider,只是限制将变成内区的上下边界。

1 水平Slider

  • leftFrame:外框左帽子的帧序号
  • middleFrame:外框中间块的帧序号
  • rightFrame:外框右帽子的帧序号
  • fillFrame:外框填充区的帧序号
  • frameWidth,frameHeight:外框帧和中间填充区帧的宽度和高度。所有这些帧应共享相同的宽度和高度
  • handleFrame:把手帧的帧序号
  • handleWidth, handleHeight:把手帧的宽度和高度

2 垂直slider

  • topFrame:外框上帽子的帧序号
  • middleFrame:外框中间块的帧序号
  • bottomFrame:外框下帽子的帧序号
  • fillVerticalFrame:外框填充区的帧序号
  • frameWidth,frameHeight:外框帧和中间填充区帧的宽度和高度。所有这些帧应共享相同的宽度和高度
  • handleFrame:把手帧的帧序号
  • handleWidth, handleHeight:把手帧的宽度和高度

水平slider范例:

local widget = require( "widget" )

-- Slider listener
local function sliderListener( event )
print( "Slider at " .. event.value .. "%" )
end

-- Create the widget
local slider = widget.newSlider
{
top
= 200,
left
= 50,
width
= 400,
value
= 10, -- Start slider at 10% (optional)
listener = sliderListener
}

垂直slider范例:

local widget = require( "widget" )

-- Slider listener
local function sliderListener( event )
print( "Slider at " .. event.value .. "%" )
end

-- Create the widget
local slider = widget.newSlider
{
top
= 200,
left
= 50,
orientation
= "vertical",
height
= 200,
value
= 10, -- Start slider at 10% (optional)
listener = sliderListener
}

个性化定制范例:

local widget = require( "widget" )

-- Slider listener
local function sliderListener( event )
print( "Slider at " .. event.value .. "%" )
end

-- Image sheet options and declaration
local options = {
frames
= {
{ x
=0, y=0, width=36, height=64 },
{ x
=40, y=0, width=36, height=64 },
{ x
=80, y=0, width=36, height=64 },
{ x
=124, y=0, width=36, height=64 },
{ x
=168, y=0, width=64, height=64 }
},
sheetContentWidth
= 232,
sheetContentHeight
= 64
}
local sliderSheet = graphics.newImageSheet( "sliderSheet.png", options )

-- Create the widget
local slider = widget.newSlider
{
sheet
= sliderSheet,
leftFrame
= 1,
middleFrame
= 2,
rightFrame
= 3,
fillFrame
= 4,
frameWidth
= 36,2014.1.23 Discuz论坛迁移+VPS配置手记 - 技术萌  阅读原文»

虽说这也不是我第一次转移这个论坛了,但毕竟还是第一次自己配置VPS,写点东西记一下

一:关于VPS的配置

1.用TeamViewer连接服务器

这个VPS的IDC自己带有一个远程控制的页面,用浏览器打开之后感觉非常的卡,并且好像没有给RDP,于是我就想到了TeamViewer,以前帮别人修电脑远程控制时就是用的这个,软件体积很小,并且自带中文。我也考虑过VNC,但是VNC控制内网里的主机是非常麻烦的,于是我就选择了TeamViewer作为远程控制的工具。

TeamViewer对于维护服务器之类的无人值守的机器可以设定“无人值守访问。首先需要注册一个账号,然后再服务器上安装tv后登陆这个账号再到设置中设定密码并勾选"授权xx轻松访问"就可以了(xx是你的用户名)

关于怎么连我也不用细说了吧。。在右面的窗格中找到你的服务器,双击,输入密码就可以了,密码貌似会自动保存,也就是说只要输一次以后就不用输了。

刚打开可能会是16色模式,那是正常现象,一会就能变成256色了

刚刚打开

几秒后

2.在IIS中创建新的网站&绑定域名

对于我这种用惯了WAMP那样的集成开发环境的人来说,刚开始面对IIS这种东西确实有点不知所措。这台VPS环境是MySQL+IIS+FastCGI+PHP,其他三个我知道是什么,唯独FastCGI这个我不知道是什么。下文引自百度百科

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
其实换句话说他就是各种服务器脚本的解释器,就是把PHP代码运行之后输出出去的东西,在IIS和PHP之间起连接器作用。
服务器上IIS的版本是IIS6,新建网站在左边“网站”上点左键,依次选“新建”-“网站”,根据提示一步一步走就可以了,唯独需要注意,对于Discuz这种程序需要给他写入权限,如图画箭头的要选上,最后一个不要选,因为我感觉这个好像和404时列出目录文件有很大关系,对网站安全有极大威胁,所以不要选
如果新建网站时忘记选这些了也可以在网站属性主目录中找到这些选项并设定
绑定域名:选择你建立的网站,右键,网站选项卡,点击网络标识中的高级,点击添加,TCP端口填80,主机头值填你的域名(注意不要带http://)点击三下确定就好了,然后进你的域名的DNS,添加记录,甩A记录到你的主机公网IP上就可以了

二:转移Discuz

1.导入数据库

关于导入数据库可以在phpmyadmin中进行,但是环境的默认上传大小只有2M,我还懒得改,于是就在服务器上安装navicat,建了个数据库,并且建了个单独供dz使用的账户,直接跑了遍那个sql文件就好了。

2.改DZ的配置文件

下面着重讲解关于修改dz配置文件的问题,可能有的朋友去百度一搜就拍脑门去改config文件夹下的config.inc.php,其实这样只是对了40%,完整的修改数据库配置需要改三个文件。我们都知道Discuz至少由三部分主城:DiscuzBoard、UCenter,DiscuzBoard是论坛的主程序,而UCenter是管理数据库的,修改config文件夹下的config.inc.php只是修改了DiscuzBoard的数据库配置,如果仅仅修改他就会造成页面可以正常显示用户和后台却登陆不上的问题。下面我这三个文件和所有需要修改的地方贴出来:

1.\config\config.inc.php

(注意这个反斜杠:Windows主机是"\"而Linux主机是"/",如果用混的后果就是找不到这个目录)

1 $_config['db']['1']['dbhost'] = 'localhost'; //数据库主机地址,本地就是localhost或127.0.0.1
2 $_config['db']['1']['dbuser'] = 'user'; //数据库用户名
3 $_config['db']['1']['dbpw'] = 'password'; //数据库密码
4 $_config['db']['1']['dbcharset'] = 'utf8'; //数据库整理(换句话说就是编码)
5 $_config['db']['1']['pconnect'] = '0';
6 $_config['db']['1']['dbname'] = 'name';//数据库名
7 $_config['db']['1']['tablepre'] = 'pre_';//表前缀
8 $_config['db']['slave'] = '';
9 $_config['db']['common']['slave_except_table'] = '';

2.\config\config_ucenter.php

define('UC_DBHOST', 'localhost'); //数据库主机地址
define('UC_DBUSER', 'user');//用户名
define('UC_DBPW', 'pass');//密码
define('UC_DBNAME', 'name');//数据库名称
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`name`.pre_ucenter_');//这里name改成数据库名称,pre_ucenter_是ucenter的表前缀,如果安装时不是默认值就改
define('UC_DBCONNECT', 0);

3.\uc_server\data\config\config.inc.php

define('UC_DBHOST', 'localhost');//主机地址
define('UC_DBUSER', 'user');//用户名
define('UC_DBPW', 'password');//密码
define('UC_DBNAME', 'name');//数据库名
define('UC_DBCHARSET', 'utf8');//数据库整理(编码)
define('UC_DBTABLEPRE', 'pre_ucenter_');//表前缀

------------------------------

哎。。折腾一早上总算折腾完了(>_<)

没有评论:

发表评论