Cocos2d-x 입문편-이미지의 조작에 대해서
5287 단어 cocos2d-x
소개
최근 cocos2d-x를 시작했기 때문에 입문편으로 정리해 갑니다. 이번에는 화상의 조작에 대해 정리해 가고 싶습니다.
이미지를 보자.
이미지를 보려면 CCSprite 클래스를 사용하여 화면에 표시할 수 있습니다.
표시하는 Layer에 대해서 add_childe 하는 것만이므로 간단하네요.
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//CCSpriteクラスを初期化する。
auto sprite = Sprite::create("HelloWorld.png");
//画面中央に表示する
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//layerに追加する
//引数1:設置するオブジェクト
//引数2:Z値
//引数3:オブジェクトのタグ
this->addchild(sprite, 0);
덧붙여서 여러 레이어를 취급하는 경우는 TAG를 붙여 addchild하는 것이 좋을 것 같습니다.
아래와 같이 enum으로 정의하고 지정하는 것으로 관리하기 쉽네요.
//こんな感じでlayer用のtagを定義する
typedef enum
{
LayerTagHeaderLayer,
LayerTagGameLayer,
LayerTagBackgroundLayer,
} LayerSceneTags;
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
this->addchild(sprite, 0, LayerTagMainLayer);
객체의 Z 값(깊이)을 변경하려면
sprite:cocos2d-x 아이콘
sprite2:droid군
그렇다면 다음과 같이 기술하면 Z 값 (깊이)을 변경할 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 1, LayerTagGameLayer);
auto sprite2 = Sprite::create("ic_launcher.png");
sprite2->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite2, 2, LayerTagGameLayer);
이미지의 표시 위치를 변경하는 경우
CCSprite 클래스의 setposison이라는 메소드로 변경할 수 있습니다.
중앙에 표시하는 경우
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
임의의 위치에 표시하는 경우
Point 클래스를 이용해 객체의 표시 위치를 할 수 있습니다.
OpenGL ES에서는 화면 왼쪽 하단이 원점입니다 (0,0).
포인트 (x 좌표 위치, y 좌표 위치);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Point(10, 10));
이미지 크기를 변경하는 경우
CCSprite 클래스의 setScale이라는 메소드로 변경할 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
sprite->setScale(2.0, 2.0);
표시/숨기기를 제어하려면
표시 ON/OFF
sprite 객체의 visible 변수를 false로 설정하여 숨길 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setVisible(false);
투명 표시
sprite 객체의 opacity를 조정 (0 ~ 255)하여 투명 표시를 할 수 있습니다.
255:투과 표시 OFF
0:숨김
auto sprite = Sprite::create("HelloWorld.png");
sprite->setOpacity(100);
이미지를 애니메이션화합시다.
cocos2d-x는 일부 애니메이션을 위한 액션을 제공합니다.
이번에는 간단한 액션만 시도한 결과를 기재해 둡니다.
· 이동 액션
auto move = MoveBy::create(2.0f, Point(100, 100));
sprite->runAction(move);
· 스케일 액션
auto sacale = ScaleBy::create(2, 5);
sprite->runAction(sacale);
・회전 액션
auto rotate = RotateBy::create(0, 90);
sprite->runAction(rotate);
· 페이드 인
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
sprite->setOpacity(0);
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeIn::create(2);
sprite->runAction(action);
· 페이드 아웃
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeOut::create(2);
sprite->runAction(action);
・투명도를 지정한 애니메이션
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto action = FadeTo::create(5, 100);
sprite->runAction(action);
・복수의 액션을 연결해 본다
Spawn 클래스를 사용하여 여러 액션을 병렬로 실행할 수 있습니다.
실제로는 애니메이션 패턴마다 클래스를 만들어 애니메이션 처리하게 된다고 생각합니다.
가변 길이 인수로 조치를 지정하고 마지막에는 NULL을 지정하십시오.
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto move = MoveBy::create(2, Point(100, 100));
auto rotate = RotateBy::create(2, 270);
auto spawn = Spawn::create(move, rotate, nullptr);
sprite->runAction(spawn);
Reference
이 문제에 관하여(Cocos2d-x 입문편-이미지의 조작에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuhiro1128/items/3721ab11f4a6b318383e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이미지를 보려면 CCSprite 클래스를 사용하여 화면에 표시할 수 있습니다.
표시하는 Layer에 대해서 add_childe 하는 것만이므로 간단하네요.
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//CCSpriteクラスを初期化する。
auto sprite = Sprite::create("HelloWorld.png");
//画面中央に表示する
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//layerに追加する
//引数1:設置するオブジェクト
//引数2:Z値
//引数3:オブジェクトのタグ
this->addchild(sprite, 0);
덧붙여서 여러 레이어를 취급하는 경우는 TAG를 붙여 addchild하는 것이 좋을 것 같습니다.
아래와 같이 enum으로 정의하고 지정하는 것으로 관리하기 쉽네요.
//こんな感じでlayer用のtagを定義する
typedef enum
{
LayerTagHeaderLayer,
LayerTagGameLayer,
LayerTagBackgroundLayer,
} LayerSceneTags;
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
this->addchild(sprite, 0, LayerTagMainLayer);
객체의 Z 값(깊이)을 변경하려면
sprite:cocos2d-x 아이콘
sprite2:droid군
그렇다면 다음과 같이 기술하면 Z 값 (깊이)을 변경할 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 1, LayerTagGameLayer);
auto sprite2 = Sprite::create("ic_launcher.png");
sprite2->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite2, 2, LayerTagGameLayer);
이미지의 표시 위치를 변경하는 경우
CCSprite 클래스의 setposison이라는 메소드로 변경할 수 있습니다.
중앙에 표시하는 경우
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
임의의 위치에 표시하는 경우
Point 클래스를 이용해 객체의 표시 위치를 할 수 있습니다.
OpenGL ES에서는 화면 왼쪽 하단이 원점입니다 (0,0).
포인트 (x 좌표 위치, y 좌표 위치);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Point(10, 10));
이미지 크기를 변경하는 경우
CCSprite 클래스의 setScale이라는 메소드로 변경할 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
sprite->setScale(2.0, 2.0);
표시/숨기기를 제어하려면
표시 ON/OFF
sprite 객체의 visible 변수를 false로 설정하여 숨길 수 있습니다.
auto sprite = Sprite::create("HelloWorld.png");
sprite->setVisible(false);
투명 표시
sprite 객체의 opacity를 조정 (0 ~ 255)하여 투명 표시를 할 수 있습니다.
255:투과 표시 OFF
0:숨김
auto sprite = Sprite::create("HelloWorld.png");
sprite->setOpacity(100);
이미지를 애니메이션화합시다.
cocos2d-x는 일부 애니메이션을 위한 액션을 제공합니다.
이번에는 간단한 액션만 시도한 결과를 기재해 둡니다.
· 이동 액션
auto move = MoveBy::create(2.0f, Point(100, 100));
sprite->runAction(move);
· 스케일 액션
auto sacale = ScaleBy::create(2, 5);
sprite->runAction(sacale);
・회전 액션
auto rotate = RotateBy::create(0, 90);
sprite->runAction(rotate);
· 페이드 인
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
sprite->setOpacity(0);
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeIn::create(2);
sprite->runAction(action);
· 페이드 아웃
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeOut::create(2);
sprite->runAction(action);
・투명도를 지정한 애니메이션
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto action = FadeTo::create(5, 100);
sprite->runAction(action);
・복수의 액션을 연결해 본다
Spawn 클래스를 사용하여 여러 액션을 병렬로 실행할 수 있습니다.
실제로는 애니메이션 패턴마다 클래스를 만들어 애니메이션 처리하게 된다고 생각합니다.
가변 길이 인수로 조치를 지정하고 마지막에는 NULL을 지정하십시오.
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto move = MoveBy::create(2, Point(100, 100));
auto rotate = RotateBy::create(2, 270);
auto spawn = Spawn::create(move, rotate, nullptr);
sprite->runAction(spawn);
Reference
이 문제에 관하여(Cocos2d-x 입문편-이미지의 조작에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuhiro1128/items/3721ab11f4a6b318383e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
auto move = MoveBy::create(2.0f, Point(100, 100));
sprite->runAction(move);
auto sacale = ScaleBy::create(2, 5);
sprite->runAction(sacale);
auto rotate = RotateBy::create(0, 90);
sprite->runAction(rotate);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
sprite->setOpacity(0);
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeIn::create(2);
sprite->runAction(action);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeOut::create(2);
sprite->runAction(action);
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto action = FadeTo::create(5, 100);
sprite->runAction(action);
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto move = MoveBy::create(2, Point(100, 100));
auto rotate = RotateBy::create(2, 270);
auto spawn = Spawn::create(move, rotate, nullptr);
sprite->runAction(spawn);
Reference
이 문제에 관하여(Cocos2d-x 입문편-이미지의 조작에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuhiro1128/items/3721ab11f4a6b318383e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)