2015-03-24 1 views
1

попытка использовать меню слайдов из функции https://coronalabs.com/blog/2014/04/08/widgets-creating-a-sliding-panel/ Я следовал именно предложенному коду, и я создал панель с тремя текстами и одной кнопкой. Затем я добавил событие к кнопке, чтобы закрыть панель, но она не работает. Не могу понять, почему .. :(Вот код:..?Закрытие меню слайдов

local panel = widget.newPanel 
{ 
    location = "left", 
    --onComplete = panelTransDone, 
    width = display.contentWidth * 0.8, 
    height = display.contentHeight * 0.8, 
    speed = 500, 
    --inEasing = easing.outBack, 
    outEasing = easing.outCubic 
} 

panel.background = display.newRect(100, -50, 900, 730) 
panel.background:setFillColor(0.1, 0.1, 0.1, 0.9) 
panel:insert(panel.background) 

panel.item1 = display.newText("GAME DESCRIPTION", 0, 0, native.systemFontBold, 40) 
panel.item1:setFillColor(1, 1, 0) 
panel.item1.x = -95 
panel.item1.y = -350 
panel:insert(panel.item1) 

panel.item2 = display.newText("SET SOUNDS", 0, 0, native.systemFontBold, 40) 
panel.item2:setFillColor(1, 1, 0) 
panel.item2.x = -170 
panel.item2.y = -250 
panel:insert(panel.item2) 

panel.item3 = display.newText("CHECK SCORE", 0, 0, native.systemFontBold, 40) 
panel.item3:setFillColor(1, 1, 0) 
panel.item3.x = -150 
panel.item3.y = -150 
panel:insert(panel.item3) 

panel.item4 = display.newText("CLOSE", 0, 0, native.systemFontBold, 40) 
panel.item4:setFillColor(1, 1, 0) 
panel.item4.x = -230 
panel.item4.y = -50 
panel:insert(panel.item4) 

local bottoneex = widget.newButton 
{ 
    --defaultFile = "play.png", 
    label="ESCI", 
    labelColor = 
    { 
     default = { 1, 1, 0, 255 }, 
    }, 
    font = native.systemFont, 
    fontSize = 40, 
    emboss = false, 
    textonly = true, 
    onEvent = provap 
} 

bottoneex.x = -250 
bottoneex.y = 50 

panel:insert(bottoneex) 


function apripanel() 
    panel:show() 
    panel:toFront() 
end 

function provap() 
    panel:hide() 
end 

Моя цель заключается в создании меню слайд, добавив к этой панели несколько пунктов меню Как я могу добиться того, что я пытался ставить кнопку (textonly = true), но я не уверен ... что, если я добавляю displaytext (как я)? Как я могу добавить listeners к texts?

Извините за глупые вопросы, но я бросить новый на этом языке! :)

Большое спасибо за вашу помощь! Ubaldo

+0

HI Kamiccolo, я сделал исправить отступы, но он не работает! Я думаю, что может быть неправильный код при вызове функции закрыть панель ... но я не знаю, что! :( – ubaldo

ответ

1

Скрытие меню работает для меня, возможно, вы используете старую версию newPanel.lua, это должно сработать для вас.

main.lua

widget = require("widget") 
require("newPanel") 

BG = display.newRect(160,240,300,460) 
BG:setFillColor(0.1, 0.1, 0.1, 1.0) 

local panel = widget.newPanel 
{ 
    location = "left", 
    onComplete = panelTransDone, 
    width = display.contentWidth*0.8, 
    height = display.contentHeight, 
    speed = 500, 
    inEasing = easing.outBack, 
    outEasing = easing.outCubic 
} 

panel.background = display.newRect(0, 0, 320, 480) 
panel.background:setFillColor(0.3, 0.3, 0.3, 0.9) 
panel:insert(panel.background) 

panel.item1 = display.newText("Item1", 0, 0, native.systemFontBold, 10) 
panel.item1:setFillColor(1, 1, 0) 
panel:insert(panel.item1) 

local function ButtonEvent1(e) 
    if ("ended" == e.phase) then 
     print("Button 1") 
     panel:show() 
     panel:toFront() 

    end 
end 

local function ButtonEvent2(e) 
    if ("ended" == e.phase) then 
     print("Button 1") 
     panel:hide() 
    end 
end 


local B1 = widget.newButton({left = 100,top = 200,id = "button1",label = "Show",onEvent = ButtonEvent1}) 
local B2 = widget.newButton({left = 100,top = 300,id = "button2",label = "Hide",onEvent = ButtonEvent2}) 

newPanel.lua

function widget.newPanel(options) 
    local customOptions = options or {} 
    local opt = {} 

    opt.location = customOptions.location or "top" 

    local default_width, default_height 
    if (opt.location == "top" or opt.location == "bottom") then 
     default_width = display.contentWidth 
     default_height = display.contentHeight * 0.33 
    else 
     default_width = display.contentWidth * 0.33 
     default_height = display.contentHeight 
    end 

    opt.width = customOptions.width or default_width 
    opt.height = customOptions.height or default_height 

    opt.speed = customOptions.speed or 500 
    opt.inEasing = customOptions.inEasing or easing.linear 
    opt.outEasing = customOptions.outEasing or easing.linear 

    if (customOptions.onComplete and type(customOptions.onComplete) == "function") then 
     opt.listener = customOptions.onComplete 
    else 
     opt.listener = nil 
    end 

    local container = display.newContainer(opt.width, opt.height) 

    if (opt.location == "left") then 
     container.anchorX = 1.0 
     container.x = display.screenOriginX 
     container.anchorY = 0.5 
     container.y = display.contentCenterY 
    elseif (opt.location == "right") then 
     container.anchorX = 0.0 
     container.x = display.actualContentWidth 
     container.anchorY = 0.5 
     container.y = display.contentCenterY 
    elseif (opt.location == "top") then 
     container.anchorX = 0.5 
     container.x = display.contentCenterX 
     container.anchorY = 1.0 
     container.y = display.screenOriginY 
    else 
     container.anchorX = 0.5 
     container.x = display.contentCenterX 
     container.anchorY = 0.0 
     container.y = display.actualContentHeight 
    end 

    function container:show() 
     local options = { 
      time = opt.speed, 
      transition = opt.inEasing 
     } 
     if (opt.listener) then 
      options.onComplete = opt.listener 
      self.completeState = "shown" 
     end 
     if (opt.location == "top") then 
      options.y = display.screenOriginY + opt.height 
     elseif (opt.location == "bottom") then 
      options.y = display.actualContentHeight - opt.height 
     elseif (opt.location == "left") then 
      options.x = display.screenOriginX + opt.width 
     else 
      options.x = display.actualContentWidth - opt.width 
     end 
     transition.to(self, options) 
    end 

    function container:hide() 
     local options = { 
      time = opt.speed, 
      transition = opt.outEasing 
     } 
     if (opt.listener) then 
      options.onComplete = opt.listener 
      self.completeState = "hidden" 
     end 
     if (opt.location == "top") then 
      options.y = display.screenOriginY 
     elseif (opt.location == "bottom") then 
      options.y = display.actualContentHeight 
     elseif (opt.location == "left") then 
      options.x = display.screenOriginX 
     else 
      options.x = display.actualContentWidth 
     end 
     transition.to(self, options) 
    end 

    return container 
end 
+0

, пожалуйста, сообщите нам, если это сработало для вас? – DeyaEldeen