• Corona手游教程之widget:Slider篇


    废话不多说,同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,
        frameHeight = 64,
        handleFrame = 5,
        handleWidth = 64,
        handleHeight = 64,
        top = 200,
        left= 50,
        orientation = "horizontal",
        width = 300,
        listener = sliderListener
    }
  • 相关阅读:
    【流处理】Kafka Stream-Spark Streaming-Storm流式计算框架比较选型
    【大数据】大数据处理-Lambda架构-Kappa架构
    【ElasticSearch】ES5新特性-keyword-text类型-查询区别
    【大数据】大数据-实时统计分析-方案选型
    【Spark】SparkStreaming-流处理-规则动态更新-解决方案
    【ElasticSearch】ElasticSearch-SQL插件
    【ElasticSearch】ElasticSearch-索引优化-自定义索引
    【算法】如何设计--高效的大数据匹配算法
    【Java】Springboot-Quartz-分布式任务调度
    网页提示[Not allowed to load local resource: file://XXXX]错误
  • 原文地址:https://www.cnblogs.com/leezj/p/4243330.html
Copyright © 2020-2023  润新知