Corona의 display 객체 및 graphics10, 2.0 비헤이비어

17166 단어 Corona
올해 초순부터 중순까지 업무 중에 코론 sdk를 접할 기회가 있다.
여기에 코론의 표시로서 기본적인 디스플레이 대상의 사용 방법과graphics1이 있습니다.0 및 graphics20에서 각 디스플레이 대상의 외관 차이에 대해 조립합니다.
display 객체 정보
corona의 화면 그리기는 기본적으로 하나의 그룹을 만들고 이 그룹에 실제 보이는 요소를 삽입해서 모든 그림 대상을 관리합니다.
콤비네이션
조합은 다음과 같은 형식으로 생성된다.
-- グループを作成
local myGroup = display.newGroup()

-- myGroup内にimage.pngオブジェクトを生成
local myImage = display.newIamge(myGroup, "image.png")
또는 전용 방법을 사용할 수 있다.
-- グループを作成
local myGroup = display.newGroup()

-- 画像オブジェクトをstage上に生成
local myImage = display.newImage("image.png")

-- myGroupにmyImageを挿入
myGroup:insert(myImage)

디스플레이 그룹은 본질적으로 루아의 테이블과 같지만 table.insert()ipairs()는 호환되지 않습니다.
또한 그룹의 원소 수를 알고 싶으면 테이블 계수를 통해 얻을 수 없습니다 #myGroup.값이 필요한 경우myGroup.numChildren 속성에서 값을 가져옵니다.
그룹 내의 층별 생각
그룹에서 각 객체의 레이어 구조는 스택과 비슷하며 가장 오래된 객체는 뒤로 이동하고 새로 만들수록 앞에 설정됩니다.
다음은 myGroup에 삽입된 displayObject의 도면층 작업 예입니다.
-- myGroup内にrectオブジェクトを生成
local square = display.newRect(myGroup, 0, 0, 100, 100)

-- myGroup内にcircleオブジェクトを生成
local circle = display.newCircle(myGroup, 80, 120, 50)

-- myGroup内にrectオブジェクトを生成
local rect = display.newRect(myGroup, 0, 0, 120, 80)

-- squareの親を取得。ここではmyGroupになる
local parent = square.parent

-- squareを背面から最前面へ移動させる。
parent:insert(square)

-- レイヤーの位置を指定して移動
parent:insert(1, circle)
이후object:toBackobject:toFront 방법도 상기 코드와 같다.
displayObject 삭제
장치 메모리가 제한되어 있으므로 필요하지 않은 display Object는 적절하게 삭제해야 합니다.
direct removal
특정 디스플레이 대상을 삭제하는 방법을 사용할 때
display.remove(myObject)

-- or

myObject:removeSelf()

-- or

myGroup:remove(myObject)
위의 방법은 메모리에서 디스플레이 대상을 완전히 방출하는 것이 아니다.
참조를 삭제해야 합니다.
display.remove(myObject)
myObject = nil

-- or

myObject:removeSelf()
myObject = nil

-- or

myGroup:remove(myObject)
myObject = nil
Group Removal
다음 예는 대상 디스플레이 그룹 내의 모든 작은 요소를 제외합니다.
display:remove(myGroup)
myGroup = nil

-- or

myGroup:removeSelf()
myGroup = nil
graphic1.0과 2.0의 차이
corona의 빌딩 번호는 2013.2000 이전,graphics1.0으로 불리는 드로잉 엔진을 사용했습니다.하지만 2013.2000 이후 버전이라면graphics2.0으로 진화하고 특별한 설정이 없으면 그래픽스2를 강제로 적용합니다.0이(가) 적용됩니다.
이게 무슨 곤란한 일이라면 그래픽스1이 몇 개 있어요.0의 기능이 폐지되면 행동에 미묘한 변화가 생길 수 있다.새 코론은 게임을 만들 때 성능과 조정의 은혜를 솔직하게 받아들일 수 있지만,graphics1.어느 정도 성과물이 형태를 이루는 단계라면 위에서 설명한 디스플레이 대상의 표시 구조도 바뀌었기 때문에 이전 버전에서 문제 없이 표시한 것들도 업데이트되면 스케치가 무너진다."아, 이제야 이렇게 대처하는구나"라는 마음이 답답하다.도망가는 길은 다음과 같은 두 가지가 있다.
  • graphics1.수동graphics2.0에 적합

  • graphicsCompatibility 사용 모드
  • 내 생각에는 이렇다.graphics1.0이 제대로 작동하면 2.의 graphics Compotibility 모드입니다.실제graphics2.0 대응하는 코론 구축 버전,graphics2.0 및 graphics10 호환 모드의 모양새 차이는 다음과 같습니다.참고로 제공하다.
    기본 검증 코드는 다음과 같다.
    Graphic2.0
    -- 新規グループ作成
    local myGroup = display.newGroup()
    
    -- 矩形作成
    local myBox = display.newRect(100, 100, 80, 80)
    
    -- myBoxを赤色に塗りつぶす
    myBox:setFillColor(1, 0, 0)
    
    -- myGroupにmyBox(矩形)を挿入
    myGroup:insert(myBox)
    print("myGroup.x : ", myGroup.x)
    print("myGroup.y : ", myGroup.y)
    print("myGroup.width : ", myGroup.width)
    print("myGroup.height : ", myGroup.height)
    
    local actualBoxX, actualBoxY = myBox:localToContent(0,0)
    print("myBox actual x : ", actualBoxX)
    print("myBox actual y : ", actualBoxY)
    
    Graphic1.0
    -- local widget = require("widget")
    
    -- 新規グループ作成
    local myGroup = display.newGroup()
    
    -- 矩形作成
    local myBox = display.newRect(100, 100, 80, 80)
    
    -- myBoxを赤色に塗りつぶす
    myBox:setFillColor(255, 0, 0)
    
    -- myGroupにmyBox(矩形)を挿入
    myGroup:insert(myBox)
    print("myGroup.x : ", myGroup.x)
    print("myGroup.y : ", myGroup.y)
    print("myGroup.width : ", myGroup.width)
    print("myGroup.height : ", myGroup.height)
    
    local actualBoxX, actualBoxY = myBox:localToContent(0,0)
    print("myBox actual x : ", actualBoxX)
    print("myBox actual y : ", actualBoxY)
    
    유효성 검사 코드 표시

    출력
    G2
    myGroup.x :     0
    myGroup.y :     0
    myGroup.width :     80
    myGroup.height :    80
    myBox actual x :    100
    myBox actual y :    100
    
    G1
    myGroup.x :     0
    myGroup.y :     0
    myGroup.width :     80
    myGroup.height :    80
    myBox actual x :    140
    myBox actual y :    140
    
    Group 위치 이동하기
    myGroup.x = 50
    myGroup.y = 50
    

    출력
    G2
    myGroup.x :     50
    myGroup.y :     50
    myGroup.width :     80
    myGroup.height :    80
    myBox actual x :    150
    myBox actual y :    150
    
    G1
    myGroup.x :     50
    myGroup.y :     50
    myGroup.width :     80
    myGroup.height :    80
    myBox actual x :    190
    myBox actual y :    190
    
    myGroup에 새 rect 객체 삽입
    G2 코드(기본적으로 색상 수치를 제외하고 G1도 동일)
    -- 新規グループ作成
    local myGroup = display.newGroup()
    myGroup.x = 50
    myGroup.y = 50
    
    -- 矩形作成
    local myBox = display.newRect(100, 100, 80, 80)
    
    -- myBoxを赤色に塗りつぶす
    myBox:setFillColor(1, 0, 0)
    
    -- myGroupにmyBox(矩形)を挿入
    myGroup:insert(myBox)
    
    
    -- 青箱を新規作成
    local blueBox = display.newRect(50, 50, 50, 50)
    blueBox:setFillColor(0, 0, 1, 0.8)
    
    -- myGroupに青箱挿入
    myGroup:insert(blueBox)
    

    끝말
    2015년에는 코론 sdk에 대한 새로운 이야기가 거의 들리지 않아 그동안 보살핌을 받은 사람들에게는 외로움이 느껴졌다.유닛,cococos-2dx 등 다른 게임 엔진에 비해 코론은 건설 속도가 빠르고 상대적으로 빠른 개발의 장점을 가지고 있다.게임뿐만 아니라 간단한 모크 앱을 만들기 좋은 부분도 있으니 간단한 게임을 만들고 싶은 분들은 꼭 만져보세요.

    좋은 웹페이지 즐겨찾기