Corona의 display 객체 및 graphics10, 2.0 비헤이비어
17166 단어 Corona
여기에 코론의 표시로서 기본적인 디스플레이 대상의 사용 방법과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:toBack
와 object: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.어느 정도 성과물이 형태를 이루는 단계라면 위에서 설명한 디스플레이 대상의 표시 구조도 바뀌었기 때문에 이전 버전에서 문제 없이 표시한 것들도 업데이트되면 스케치가 무너진다."아, 이제야 이렇게 대처하는구나"라는 마음이 답답하다.도망가는 길은 다음과 같은 두 가지가 있다.
graphicsCompatibility 사용 모드
기본 검증 코드는 다음과 같다.
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
G1myGroup.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
G1myGroup.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 등 다른 게임 엔진에 비해 코론은 건설 속도가 빠르고 상대적으로 빠른 개발의 장점을 가지고 있다.게임뿐만 아니라 간단한 모크 앱을 만들기 좋은 부분도 있으니 간단한 게임을 만들고 싶은 분들은 꼭 만져보세요.
Reference
이 문제에 관하여(Corona의 display 객체 및 graphics10, 2.0 비헤이비어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sunny_510/items/1eaed548cfcb8619bf6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)