Blur(ぼかし)エフェクトをかける

UWPにてXAMLコントロールに対するBlur(ぼかし)効果は廃止されました。 しかし、RenderTargetBitmapというXAMLコントロールをビットマップ化するAPIを用いてビットマップ化 -> ぼかし画像処理 -> コントロールのBackgroundに適用をすることでぼかしを再現できます。 というわけでこんなBlurコントロールを作ってみました。 public sealed class Blur : Panel { public int Level { get { return (int)GetValue(LevelProperty); } set { SetValue(LevelProperty, value); } } // Using a DependencyProperty as the backing store for Level. This enables animation, styling, binding, etc… public static readonly DependencyProperty LevelProperty = DependencyProperty.Register(“Level”, typeof(int), typeof(Blur), new…

【cocos-2dx+Windows10ゲーム開発】メニューを表示する

cocos-2dxでメニューを作成するにはMenuItemImageクラスとMenuクラスを使います。 まず、MenuItemImageを作ります。createメソッドにはメニューを押していないときの画像、メニューを押したときの画像、とメニューが押されたときのコールバック関数を書きます。 今回はメニューが押されたときにラムダ式が呼ばれるようにします。 そしてMenuItemImageが作成できたらMenuクラスに追加します。 Menuクラスは複数のMenuItemImageをまとめて1つのメニューとして扱います。 //メニュー1を作成 auto menuItem1 = MenuItemImage::create(“off.png”, “on.png”, [this](Ref* res){ //メニューがクリックされたときこの中が実行される log(“menu clicked!”); }); menuItem1->setPosition(100,100); //メニューを作成 auto menu = Menu::create(menuItem1, NULL); menu->setPosition(Vec2(150, 150)); this->addChild(menu);

【cocos-2dx+Windows10ゲーム開発】画像を表示する

cocos2dxで画像を表示するにはSpriteクラスを使います。 createメソッドに渡す引数はcocos2dxのResourcesフォルダからの相対パスになります。 画像の表示位置はsetPositionメソッドにVec2構造体を参照渡しすることで表示位置を指定できます。 画像の表示位置は左下からの座標になります。 最後に自信のレイヤーにaddChildすることで画像を表示できます。 auto sprite1 = Sprite::create(“HelloWorld.png”); sprite1->setPosition(Vec2(300, 120)); this->addChild(sprite1);

【cocos-2dx+Windows10ゲーム開発】空のシーンを作る

cocos2dxで空のシーンを作るにはLayerクラスを継承したシーンクラスを作ります。 CREATE_FUNCマクロはautorelease付きのcreateメソッドを作ってくれます。 createSceneメソッドではSceneを一つ作り、その子要素として自身をレイヤーに追加します。 CREATE_FUNCマクロで作ったcreateメソッドではinitメソッドを呼んでくれるのでinitメソッドで初期化を行います。 最初に必ずスーパークラスのinitを呼び、今回はLogに出力することとします。 TestScene.h #pragma once #include “cocos2d.h” using namespace cocos2d; class TestScene :public Layer { public: static Scene* createScene(); bool init() override; CREATE_FUNC(TestScene); }; TestScene.cpp #include “TestScene.h” Scene* TestScene::createScene() { auto scene = Scene::create(); auto layer = TestScene::create(); scene->addChild(layer); return scene; } bool TestScene::init() { if (!Layer::init()) { return false; } CCLog(“TestScene…

【cocos-2dx+Windows10ゲーム開発】タッチイベントを取得する

cocos2dxでタッチイベントを取得するためにはEventListenerTouchOneByOneを使います。 イベントリスナーを取得したあと、それぞれのタッチイベントに対しラムダ式でメソッドを登録することでそのイベントが発生したときにラムダ式内が呼ばれます。 最後に、イベントリスナーを登録します。 以下のコードをsceneのinitメソッドに書きます。 //タッチイベントのリスナーを取得 auto listener = EventListenerTouchOneByOne::create(); //タッチ開始イベント listener->onTouchBegan = [](Touch* touch, Event* event) -> bool{ auto x = touch->getLocation().x; auto y = touch->getLocation().y; CCLog(“onTouchBegan x:%lf y:%lf”,x,y); return true; }; //タッチ移動イベント listener->onTouchMoved = [](Touch* touch, Event* event) -> bool { auto x = touch->getLocation().x; auto y = touch->getLocation().y; CCLog(“onTouchMoved x:%lf y:%lf”, x, y);…