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);

좋은 웹페이지 즐겨찾기