반응형
오늘은 ui.lua 클래스 파일을 이용해서 이미지 버튼을 만들겠습니다.
아래 파일을 먼저 받으세요.
이 파일을 열어서 분석해 보시면 newButton과 newLable을 이용할 수 있도록 만든 부분을 보실 수 있으실 거예요.
버튼을 만들면 이렇게 나옵니다.
소스를 볼까요?
display.setStatusBar (display.HiddenStatusBar)
require "ui"
local background = display.newImage ("background.png")
peachbutton = ui.newButton{
default = "peach.png",
over = "peach2.png",
x = 80,
y = 200,
}
local textFieldButtonPress = function( event )
print("Button Pressed")
end
txtFieldButton = ui.newButton{
default = "peach.png",
over = "peach2.png",
onPress = textFieldButtonPress,
text = "textField",
x = 240,
y = 200,
size = 16,
emboss = true
}
local titleLabel = ui.newLabel{
bounds = { 15, 5, 290, 55 },
text = "Native Display Objects",
font = native.systemFontBold,
textColor = { 240, 240, 90, 255 },
size = 24,
align = "center"
}
저 위에 이미지에 newLabel을 하나 추가했어요.
사용법은 간단합니다.
우선 ui.lua를 main.lua 파일이 있는 폴더에 같이 넣구요.
require "ui"를 합니다.
코드를 보시면 우선 백그라운드 이미지를 깔았고
첫번째 이미지 버튼을 만들었습니다.
이 버튼의 평상시 상태는 default로 설정된 peach.png 이미지가 나옵니다.
그리고 이 버튼을 누르면 peach2.png 이미지로 바뀌게 됩니다.
그리고 textFieldButtonPress 라는 함수를 만들었는데 이건 두번째 버튼을 클릭하면 호출되는 함수 입니다.
두번째 이미지 버튼은 첫번째 이미지 버튼에 없는게 몇개 있습니다.
우선 onPress = 는 눌렀을 때 함수를 호출합니다.
그리고 text = 버튼 위에 텍스트를 넣을 수 있구요.
size는 텍스트 사이즈 입니다.
이 두번째 이미지를 누르면 textFieldButtonPress 함수가 실행 됩니다.
그리고 마지막 번엔 newLabel 을 넣었습니다.
처음에 bounds ={} 를 이해하려면 ui.lua의 181번째 줄을 보시면 됩니다.
local bounds = params.bounds
local left = bounds[1]
local top = bounds[2]
local width = bounds[3]
local height = bounds[4]
이렇게 돼 있는데요. 4개의 인수들이 있고 각각 왼쪽 위 너비 높이를 나타냅니다.
이렇게 ui.lua를 이용해서 이미지 버튼과 이미지 레이블을 사용하는 법을 알아봤습니다.
전체 소스 파일은 위에서 받으 실 수 있습니다.
코로나에서는 이렇게 ui.lua를 사용하지 않고 Widget API에서 버튼 기능을 제공합니다.
하지만 이것은 Corona build 2011.646 이후 버전에서만 가능합니다.
미리 한번 살펴 보면 신택스는 아래와 같습니다.
widget.newButton( [options] )
샘플예제를 보면요.
local widget = require "widget"
local onButtonEvent = function (event )
if event.phase == "release" then
print( "You pressed and released a button!" )
end
end
local myButton = widget.newButton{
id = "btn001",
left = 100,
top = 200,
label = "Widget Button",
width = 150, height = 28,
cornerRadius = 8,
onEvent = onButtonEvent
}
-- Insert button into a group:
someGroup:insert( myButton.view )
-- Change the button's label text:
myButton:setLabel( "My Button" )
-- Remove the button
display.remove( myButton )
widget을 rerquire 하구요. (이 widget은 ui.lua처럼 별도의 파일이 아니라 corona SDK 가 자체적으로 제공하는 겁니다. 물론 646 이후 버전에서요. 그러니까 별도의 파일을 구해서 폴더에 넣을 필요가 없습니다.)
widget.newButton{} 으로 구현합니다.
안에 내용은 id,left,top,lable,width 뭐 이런것들이 있구요.
아주 다양한 파라미터들이 있습니다.
이건 나중에 이 기능을 제가 사용할 수 있을 때 자세히 살펴 보겠습니다.
onEvent = 에 클릭했을 때 실행될 함수를 넣습니다.
아직 안정성이 검증되지 않은 코로나 SDK 버전에 있는 내용입니다.
지금은 Build 2011.591 버전이 공식적으로 배포되고 있습니다.
나중에 646 버전이 공식 인증된 공개 버전이 되고 제가 그 버전을 사용하게 되면 좀 더 자세히 정리해 볼까 합니다.
그럼 즐거운 주말 되세요.
반응형
'Corona SDK > Corona SDK TIPs' 카테고리의 다른 글
코로나로 책장 넘기는 효과 주기 (0) | 2011.12.06 |
---|---|
내 코드 모듈화 하기 (modularize) (0) | 2011.12.01 |
드래그 하기 기초 (0) | 2011.11.25 |
화면 전환 클래스(director.lua) 사용하기 와 랜덤 화면 전환 (2) | 2011.11.24 |
Sprite sheet로 애니메이션 표현하기 (주사위 놀이) (2) | 2011.11.23 |
화면에 시간 표시하기 (스탑와치) (0) | 2011.11.17 |
Screen Transitioning. (화면 전환,이동) (0) | 2011.11.16 |
앱 항상 켜 있게 하기 (system.setIdleTimer( enabled )) (0) | 2011.11.15 |
Animation Speed Control 은 movieClip보다 Sprites로 (0) | 2011.11.14 |
특정 영역에 들어가면 객체의 색 바꾸기 (Sensor) (0) | 2011.11.12 |