Страницы

Поиск по вопросам

Показаны сообщения с ярлыком coronasdk. Показать все сообщения
Показаны сообщения с ярлыком coronasdk. Показать все сообщения

понедельник, 16 декабря 2019 г.

Прокрутка меню в Corona SDK

#lua #menu #coronasdk


Создаю прокрутку для меню в Lua CORONA SDK.

Исходник файла menu.lua

local composer = require( "composer" )
local widget = require( "widget" )

local scene = composer.newScene()

local function onButtonRelease( event )
composer.gotoScene( event.target.id:lower(), { effect="fade", time=300 } )
--composer.recycleOnSceneChange = true
end

function scene:create( event )

local sceneGroup = self.view

local sceneTitle = display.newText( sceneGroup, "Выберете уровень", display.contentCenterX,
10, composer.getVariable( "appFont" ), 20 )

-- Создание массива из кнопок меню
local menuButtons = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18"  }

-- Создание цикла для кнопок меню
local rowNum = 0
for i = 1,#menuButtons do

    rowNum = rowNum+1
    local button = widget.newButton(
        {
            label = menuButtons[i],
            id = menuButtons[i],
            shape = "circle",
            radius = 20,
            font = composer.getVariable( "appFont" ), 
            fontSize = 16,
            fillColor = { default={ 0.12,0.32,0.52,1 } ,over={ 0.132,0.352,0.572,1
} }, -- цвет кнопки и нажатия на кнопку
            labelColor = { default={ 1,1,1,1 }, over={ 1,1,1,1 } }, -- цвет шрифта
на кнопках
            onRelease = onButtonRelease
        })

   mod = math.fmod(i, 2) -- определение кратности

    if (i*mod >= 1 ) then -- если кратно 1
        button.x = display.contentCenterX -50
        elseif (i*mod == 0) then  -- если кратно 0 
            button.x = display.contentCenterX + 50 
        end     
    button.y = 65 + ((rowNum-1)*35) -- растояние по y между кнопками

    sceneGroup:insert( button ) -- обновление сцены после нажатия на кнопку
end

end

scene:addEventListener( "create", scene ) -- слушатель на создание сцены


--обработка касаний
function scene:touch(e)
-- body
if(e.phase == "began") then
        print("начало a");
    elseif (e.phase == "moved") then
        scene.x = e.x;
        scene.y = e.y;
        print("двигаю a");
    elseif(e.phase == "ended") then
        print("отпустил a");
end
end

 scene:addEventListener("touch", scene);

return scene


Для наглядности прикрепляю изображение



По обработке касаний, пробовал как со сценой, так и с меню, и с массивом кнопок.

Подскажите, пожалуйста, решение моей проблемы.
    


Ответы

Ответ 1



Для выполнения поставленной цели, нужно создать scrollView и переместить в функцию код на создания кнопок в цикле из function scene:create в function showSlidingMenu и слушать события каждый раз в Runtime. Для реализации прокрутки меню сразу при переходе в меню, функция вызывается в scene:create local composer = require( "composer" ) local widget = require( "widget" ) local scrollView local scene = composer.newScene() local function onButtonRelease( event ) composer.gotoScene( event.target.id:lower(), { effect="fade", time=300 } ) end function scene:create( event ) sceneGroup = self.view composer.recycleOnSceneChange = true; local sceneTitle = display.newText( sceneGroup, "Выберете уровень", display.contentCenterX, 10, composer.getVariable( "appFont" ), 20 ) end local function ButtonListener( event ) if ( event.phase == "moved" ) then local dx = math.abs( event.x - event.xStart ) if ( dx > 5 ) then scrollView:takeFocus( event ) end elseif ( event.phase == "ended" ) then print( "клик по объекту" ) timer.performWithDelay( 10, function() scrollView:removeSelf(); scrollView = nil; Runtime:removeEventListener("touch",showSlidingMenu) end ) end return true end function showSlidingMenu( event ) if ( "ended" == event.phase ) then scrollView = widget.newScrollView { width = _W, height = _H, scrollWidth = width, scrollHeight = height, horizontalScrollDisabled = true } scrollView.x = display.contentCenterX scrollView.y = display.contentCenterY local menuButtons = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18" } rowNum = 0 for i = 1,#menuButtons do rowNum = rowNum+1 local button = widget.newButton( { label = menuButtons[i], id = menuButtons[i], shape = "circle", radius = 20, font = composer.getVariable( "appFont" ), fontSize = 16, fillColor = { default={ 0.12,0.32,0.52,1 } ,over={ 0.132,0.352,0.572,1 } }, -- цвет кнопки и нажатия на кнопку labelColor = { default={ 1,1,1,1 }, over={ 1,1,1,1 } }, -- цвет шрифта на кнопках onRelease = onButtonRelease }) mod = math.fmod(i, 2) -- определение кратности if (i*mod >= 1 ) then -- если кратно 1 button.x = display.contentCenterX -50 -- смещение относительно центра влево elseif (i*mod == 0) then -- если кратно 0 button.x = display.contentCenterX + 50 -- смещение относительно центра впрово end button.y = 30 + ((rowNum-1)*35) -- координаты первой кнопки и растояние по y между кнопками scrollView:insert( button ) sceneGroup:insert( scrollView ) scene:addEventListener( "touch", ButtonListener ) end return true end end -- hide() function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Код здесь работает, когда сцена находится на экране (но собирается уйти с экрана) print ("ухожу с экрана"); elseif ( phase == "did" ) then -- Код здесь запускается сразу после того, как сцена полностью выходит за пределы экрана print ("ушел за пределы экрана"); end end -- destroy() function scene:destroy( event ) local sceneGroup = self.view showSlidingMenu = nil; end scene:addEventListener( "create", scene ) -- слушатель на создание сцены scene:addEventListener( "destroy", scene ) scene:addEventListener( "hide", scene ) Runtime:addEventListener("touch",showSlidingMenu) return scene Если тема создания меню с помощью Corona SDK интересна, то буду ее развивать

суббота, 7 декабря 2019 г.

Выбор кроссплатформенного мобильного движка для игр [закрыт]

#unity3d #android #разработка_игр #coronasdk #ios


        
             
                
                    
                        
                            Closed. This question is opinion-based. It is not currently
accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it can be answered with facts and citations by editing this post.
                        
                        Closed 2 года назад.
                                                                                
           
                
        
Цель: разработка кросплатформенных игр на мобильные телефоны.
Основной target: iOS (iPhone/iPad) и Android, большим плюсом будет поддержка Windows
Phone 7, Symbian, Bada.
Задача: максимально быстрая и удобная разработка игр, цена движка роли не играет.
Из игр, предположительно 2D аркады, казуалки. Должна быть возможность показа рекламы,
поддержка мультиплеера и интеграции с Game Center (iOS) / OpenFeint, шаринг в соц сети.
Доступ к Native API будет большим плюсом. Большое количество 3rd Party Tools, плагинов
и наработок, ускоряющих процесс разработки тоже крайне желательно.
На данный момент есть два претендента: Corona SDK и Unity 3d. У обоих есть как плюсы
так и минусы. Слышал разработка 2D игр на Unity требует довольно больших усилий, за
то в замен получаем desktop и web версии!
В общем дискас. Плюсы, минусы, подводные камни. Возможно есть еще годные аналоги
которые я упустил.    


Ответы

Ответ 1



Я конечно в этом деле не спец, но могу сказать что часто вижу как используются движки типа Unity 3D и Box2D, последний используется во флэше тоже. Box2D бесплатен и довольно таки хорош. UPD: Не малое количество всяких туториалов по движкам есть тут.

Ответ 2



Остановился на Corona SDK, быстро, удобно. Код пишется на Lua, поддерживаютсю платформы iOS / Android / Kindle Fire / Nook и совсем скоро будет поддержка десктопных Mac App Store приложений. В качестве редактора можно использовать TextMate, Sublime Text 2, Intellij IDEA, VIM. Для них всех есть бандлы добавляющие поддержку короны. Я пока остановился на ST2. Большой плюс Короны, это очень много уроков, примеров кода и библиотек, а так же сторонних программ, типа LevelBuilder, PhysicsHelper, значительно упрощающих разработку. Вот еще пару ссылок на туториалы: Официальные семплы Mobile.Tuts+ Learning Corona – вообще мега сайт, собраны почти все толковые уроки, что есть в сети.

четверг, 11 октября 2018 г.

Выбор кроссплатформенного мобильного движка для игр [закрыт]

Цель: разработка кросплатформенных игр на мобильные телефоны. Основной target: iOS (iPhone/iPad) и Android, большим плюсом будет поддержка Windows Phone 7, Symbian, Bada. Задача: максимально быстрая и удобная разработка игр, цена движка роли не играет. Из игр, предположительно 2D аркады, казуалки. Должна быть возможность показа рекламы, поддержка мультиплеера и интеграции с Game Center (iOS) / OpenFeint, шаринг в соц сети. Доступ к Native API будет большим плюсом. Большое количество 3rd Party Tools, плагинов и наработок, ускоряющих процесс разработки тоже крайне желательно. На данный момент есть два претендента: Corona SDK и Unity 3d. У обоих есть как плюсы так и минусы. Слышал разработка 2D игр на Unity требует довольно больших усилий, за то в замен получаем desktop и web версии! В общем дискас. Плюсы, минусы, подводные камни. Возможно есть еще годные аналоги которые я упустил.


Ответ

Остановился на Corona SDK, быстро, удобно. Код пишется на Lua, поддерживаютсю платформы iOS / Android / Kindle Fire / Nook и совсем скоро будет поддержка десктопных Mac App Store приложений. В качестве редактора можно использовать TextMate, Sublime Text 2, Intellij IDEA, VIM. Для них всех есть бандлы добавляющие поддержку короны. Я пока остановился на ST2 Большой плюс Короны, это очень много уроков, примеров кода и библиотек, а так же сторонних программ, типа LevelBuilder, PhysicsHelper, значительно упрощающих разработку. Вот еще пару ссылок на туториалы: Официальные семплы Mobile.Tuts+ Learning Corona – вообще мега сайт, собраны почти все толковые уроки, что есть в сети.