반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

New Native Web and Video API’s 소개

2012. 1. 24. 14:07 | Posted by 솔웅


Using the New Native Web and Video API’s

native webView와 native video 객체와 관련한 새로운 API가 새로 나왔습니다.
이전의 Web Popupsvideo playback 의 한계를 많이 보완했습니다.

***** Web Views vs. Web Popups

이 두가지 콘셉은 상당히 비슷하지만 몇가지 다른 것이 있습니다.
- 한번에 한개 이상의 WebView를 가질 수 있음
- WebView는 다른 display객체들 처럼 회전시키거나 이동시킬 수 있다.
  (이 객체들이 native 객체들이기 때문에 아직까지는 group에 포함시킬수는 없음)
- phisics body를 적용할 수 있다.
- WebView는 반드시 확실하게(명시적으로) remove시켜야 함

***** Video Objects

Native 비디오 객체들은 그것을 계승한 media.playVideo보다 훨씬 유연합니다.

- 비디오 객체의 사이즈를 specify할 수 있다.(전체 스크린이 아니어도 된다.)
- 한 화면에 여러개의 VIDEO 객체들이 있을 수 있다.
- 비디오의 특정 위치를 프로그래밍으로 찾아서 사용할 수 있다.
- 프로그램에서 비디오를 play 시키고 pause 시킬 수 있다.
- 다른 display 객체들처럼 비디오 객체들도 움직이거나 회전시킬 수 있다.
  (이 객체들이 native 객체들이기 때문에 아직까지는 group에 포함시킬수는 없음)
- physics body를 적용할 수 있다.



***** native.newWebView() 사용법

신택스(syntax)는 아래와 같습니다.
native.newWebView( left, top, width, height [, listener] )

보다 자세한 사항은  API documentation 에 있습니다.

아래 예제가 있습니다.
local webView = native.newWebView( 0, 0, 320, 250 )
webView:request( "http://coronasdk.tistory.com" )

이 예제는 320*250 크기의 웹뷰를 생성하고 그 안에 http://coronasdk.tistory.com 를 display합니다.
request()함수 안에는 local HTML파일도 불러올 수 있습니다.

아래 예제는 웹뷰에 리스너를 단 예제입니다.

local function webListener( event )
    local url = event.url  -- reference to url being requested

    if event.errorCode then  -- is nil when there is no error
        native.showAlert( "Error!", event.errorMessage, { "OK" } )
    end
end

local webView = native.newWebView( 0, 0, 320, 250, webListener )
webView:request( "http://fakewebsitethatshouldthrowerror.com" )

보시면 webListener라는 리스너를 달아서 에러가 발생하면 alert화면을 띄워 줍니다.
이벤트의 파라미터로는 event.url, event.errorCode, event.errorMessage 가 있습니다.

아래 예제는 WebView를 회전(rotate) 시키는 예제 입니다.

local webView = native.newWebView( 0, 0, 100, 100 )
webView:request( "http://coronasdk.tistory.com/" )
webView.x = 200
webView.y = 240
webView.rotation = 45

-- let's close the webView
webView:removeSelf()
webView = nil

좀 더 자세한 사항은 API Documentation을 참조하세요.

그리고 샘플 코드는 /SampleCode/Interface/WebViewPhysics 에 있습니다.
(이 샘플 파일은 Corona build 2012.731 이후 버전에 있습니다.)

- 로컬 content를 load 할 때 약간의 버그가 있습니다. 이 버그는 조만간 수정될 예정입니다. -

***** native.newVideo()usage

native video object는 리스너가 없기 때문에 이해하가 더 쉽습니다.
비디오 객체를 생성하고 위치를 찾거나 이동시키거나 회전시키거나 physics를 적용하는 일만 하면 됩니다.
그리고 이 모든 일이 끝났으면 remove시키면 됩니다.

신택스는 아래와 같습니다.
native.newVideo( left, top, width, height )

보다 자세한 내용은 여기를 참조하세요.

아래 예제는 비디오 객체를 생성하고 비디오 파일을 로딩하고 특정 지점을 찾고 움직이고 회전시키고 그리고 최후에는 이 객체를 remove 시키는 예제 입니다.

local video = native.newVideo( 0, 0, 220, 275 )
 
-- load a video and jump to 0:30
video:load( "myvideo.m4v", system.DocumentsDirectory )
video:seek( 30 )
 
-- play video and move/rotate
video:play()
video.x = 50
video.y = 150
video.rotation = 90
 
-- pause the video and remove
video:pause()
video:removeSelf()
video = nil

예제 파일은  SampleCode/Interface/VideoViewPhysics 에서 볼 수 있습니다.
(이 샘플 파일은 Corona build 2012.731 이후 버전에 있습니다.)
보다 자세한 사항은 API documentation을 이용하세요.

위 내용 원본은 여기에 있습니다.
이 원본을 바탕으로 제가 간단히 요약 번역 했습니다.

native display들은 시뮬레이터에서 지원하지를 못합니다.
그리고 Corona build 2012.731 버전은 2012년 1월 24일 올라왔고 아직 유료 사용자에게 밖에 공개가 안 돼 있습니다.

다음에는 샘플코드를 분석해 보도록 하겠습니다.


반응형

Comment

  1. the_evo 2012.01.25 04:02

    좋은 정보 눈팅만 하다가 글 올립니다.
    감사와 함께 질문이 있어 올립니다.
    최신 글이라 여기에 댓글 다는 것을 고려해주셨으면 합니다.

    저희도 네이티브 언어를 하다 효율성과 미래성을 문제로

    새로운 언어를 선택하려고 합니다. 고민은....



    센챠와 같은 하이브리드냐, 효율 최고의 코로나냐?



    로 고민 하고 있습니다.

    둘 다 쓰시는 것을 보고 허락도 없이 질문하여 죄송합니다.


    둘 다 써보신 것으로 어떤 점이 장단점인가요?
    그리고 어떤 언어의 선택이 괜찮을까요?



    너무 광범위한 질문이지만....
    태생이 프로그래머가 아닌 2명과 1명의 프로그래머가
    오랜 시간을 투자할 것이기에........젊은 친구들의 고민에 도움을
    꼭 주셨음 좋겠습니다ㅠㅠ

    게임만을 고집하진 않구요, 게임과 함께 생산성 관련 어플을
    준비하려 합니다. 제한은 없습니다. 인터렉티브 북에도 지대한 관심이
    있습니다. App 컨텐츠 개발과 함께 서비스의 개발에 중점을 많이 두고 있습니다.

    어떤 언어가 좋을까요.......
    코로나는 동시에 여러 플랫폼을 지원한다는 장점이 있고 빠른 개발이
    장점이며 게임에 아주 적합한데...
    하이브리드는 웹과 연동이 쉽고 발전 가능성을 엿보고 있습니다.

    꼭 답변 부탁드립니다.....서울 오시면 밥 한그릇 대접하겠습니다;;;;

    어떤 의견이라도 좋으니 개혁자(?!)분의 말씀을 듣고 싶습니다....ㅠㅠ

    ps. 코로나 책 출간 꼭 되길 바랍니다!! 꼭 보고 싶어요!!

    • 솔웅 2012.01.26 05:05 신고

      질문에 굉장한 열정이 보이셔서 함부로 댓글 달기가 두려울 정도네요. 그래서 조금 늦었습니다.
      저도 둘 중의 어느쪽이 더 좋으냐는 대답하기 힘드네요.
      제 경우엔 안드로이드 앱 개발하다가 크로스 플랫폼 툴이 있다고 해서 코로나를 사용했거든요.
      사용했더니 Physics 엔진 등 게임 만들기에는 아주 획기적으로 좋더라구요.
      그리고 배우기도 쉽고요.
      그래서 크로스 플랫폼 툴에 대해 더 알아보다가 앞으로 HTML5 시대가 되면 PC 웹싸이트 뿐만아니라 모바일 웹 & 게임까지 HTML5로 구현 가능할 것 같아서. HTML5를 배우고 있구요.
      그리고 지금도 HTML5로 만든 게임을 해보면 아주 상당한 수준까지 개발 되고 있더라구요.
      저도 아직 배우는 중이라 어느것이 좋다라고 선택은 못하겠습니다.
      제 경우에 프로그래머로 활동한지 10년하고 2~3년 더 되는데요.
      PHP/HTML/Javascript/CSS, JSP ,MacroMedia Director 의 Ringo, ASP, J2ME, C++, JAVA, Android Native Language, Corona SDK, HTML5 ...
      등등 여러가지 언어를 경험했습니다.
      그리고 그 경험들이 새로운 언어를 배울 때 아주 도움을 많이 주고 있구요.
      제가 추천드리고 싶은것은 둘 다 하시라고 말씀 드리고 싶어요.
      다른일은 한가지 일을 꾸준히 하면 (한 우물만 파면) 그 분야의 전문가가 되서 대접을 받지만 이 쪽은 그렇게 하다가는 시대에 뒤떨어지게 됩니다.
      계속 변화하는 신기술을 잘 받아들일 수 있어야 하는 것 같습니다.
      Corona SDK와 센챠 터치 등의 하이브리드의 장단점을 잘 파악하신다음에 the-evo님이 진행하실 프로젝트가 구체화 되면 어느 것으로 구현하는것이 좋은지 파악해 보시고 그 쪽을 선택하시는게 맞다고 봅니다.
      다른 프로젝트에서는 다른 쪽을 사용해야 될 수도 있겠죠.
      예를 들어 코로나에서는 아직 전화걸기 기능은 없습니다.(문자메세지,이메일 기능이 최근 추가 됐을 뿐입니다.) 모바일 앱 중에 전화걸기 기능이 반드시 필요하다면 Corona SDK를 사용할 수 없겠죠.
      그리고 다른 Corona SDK의 장점들이 내 프로젝트에 아주 유용할 것 같으면 Corona SDK를 선택하셔야겠고요.
      충분한 답변이 됐는지 모르겠습니다.
      그냥 저는 둘 다 좋은거 같아서 둘 다 공부하고 있습니다.
      Corona SDK, HTML5 모두 빠른 속도로 발전하고 있거든요..

      그럼...

  2. the_evo 2012.01.26 21:50

    솔직한 답변에 너무 감사드립니다.

    저희는 아직 초년생에 가까워 대선배님의 말씀이 꼭 듣고 싶었습니다^^
    언어의 선택이 진행하는 일에 따라
    '때에 따라 다르다' 라는 말에 대해서 아주 공감되며 새겨 듣도록 하겠습니다~

    태생이 프로그래머가 아니다보니 한 언어의 공부시간만 해도 많이 걸릴것 같아서 고민이 많았습니다. 솔옹님의 말씀을 들으니 조금 확신이 들 것 같습니다.

    단지 하이브리드에 대한 내용들은 조금씩 있는데 코로나에 대한 내용이 전무해서 고민이 많았습니다. 센챠와 일부 하이브리드들이 iscroll등의 구현의 문제나 또는 깜빡임 등의 문제가 있다는 이야기를 듣기도 하는데 코로나는 과연 문제가 뭐가 있을까에 대한 글을 도통 볼 수가 없어 답답한 마음에 질문을 했습니다..ㅎㅎ단점의 문제에 너무 집착한 것이 아닌가 하는 생각도 듭니다. (프로그래머가 아니라 두려워서 그렇습니다;;)

    바쁘신 와중에 정성있는 답변 감사드립니다^ㅁ^
    코로나의 경우 국내에 유저가 없어 솔옹님의 블로그가 정말 유용히 다가왔습니다. 한국에 좋은 툴과 좋은 내용을 전달해주시는 것에 정말 감사드립니다~^^

    ps. 한국 꼭 한번 오시길 바랍니다^^ㅋ 제가 미국 가면 만나주시나요?ㅇ?;;;ㅋㅋ(어딨는지도 모르면서;ㅋㅋ)

    • 솔웅 2012.01.27 04:32 신고

      이렇게 좋게 말씀해 주시니 너무 고맙네요.
      한국에 가면 꼭 연락 드릴께요.
      미국에 오시면 연락하고 오세요.. ^^
      저는 뉴저지에 사는데요. 뉴욕이랑 거의 붙어있어요.
      그럼 용의해 하시는 일 번창하시길 바랍니다.

      감사합니다.