投稿

ラベル(cocos2d-x)が付いた投稿を表示しています

cocos2d-x v3系で UI Nodesを試す Button編

普段、MenuやMenuItemを駆使しボタンを実装していたのだが、Buttonクラスも用意されていたようだ。 なぜ今まで気づかなかったのか... ``` auto button = ui::Button::create(); button->loadTextures( "images/btn/btn_off.png", "images/btn/btn_on.png", "images/btn/btn_disabled.png"); button->setPosition(Point(0, 0)); button->setAnchorPoint(Vec2::ZERO); button->setTouchEnabled(true); button->addTouchEventListener([this](Ref* pSender, cocos2d::ui::Widget::TouchEventType type) { switch (type) { case ui::Widget::TouchEventType::BEGAN: break; case ui::Widget::TouchEventType::MOVED: break; case ui::Widget::TouchEventType::CANCELED: break; case ui::Widget::TouchEventType::ENDED: break; default: break; } }); this->addChild(button); ``` 画面左下にボタンが現れていることだろう。 (ラムダで書くとスッキリする 以上、Gist的な投稿でした。

cocos2d-x v3系で UI Nodesを試す TableView編

qiitaに投稿した : http://qiita.com/isaoeka/items/bc92d348d375a3c6325e 全く同じ内容をココにも残す。 --- cocos2d-x v3系のTableViewを試したので、メモ。 今回は表示する内容をVectorで持つことにしました。 下記にお試しコードを記載 ```HelloWorldScene.h #include "cocos2d.h" #include "extensions/cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; class HelloWorld : public Layer, public TableViewDataSource, public TableViewDelegate { private: std::vector _contents; public: static cocos2d::Scene* createScene(); virtual bool init(); // TableView Delegate virtual Size cellSizeForTable(TableView* table); virtual TableViewCell* tableCellAtIndex(TableView* table, ssize_t idx); virtual ssize_t numberOfCellsInTableView(TableView* table); virtual void tableCellTouched(TableView* table, TableViewCell* cell); CREATE_FUNC(HelloWorld); }; ``` 本来であれば、headerファイルでUSING_NS_xxx;を指定するのは辞めたほうがいいですね。 ```HelloWorldScene.cpp bool HelloWorld::init() { if (!Layer::init()) { ...

cocos2d-xのblinkが思っていたのと違う

cocos2d-x標準のblinkが1,0の点滅を行うチカチカした点滅であったので、 フェードで点滅を行うような実装をしてみる cocos2d-x 3系で実装を試す。 #### 初期化 ``` mSprite = Sprite::create("hoge.png"); mSprite->setPosition(Vec2(100,100)); this->addChild(mSprite, 4); this->schedule(schedule_selector(HelloWorld::tapToStartSchedule)); ``` #### スケジュールの実装 ``` void HelloWorld::blinkSchedule(float frame) { static float x = 255; x += 0.08; //数値はよしなに int middle = 128; mSprite->setOpacity( sin(x) * middle + middle ); // 0~255 if(x >= FLT_MAX) x=0; } ``` blinkScheduleの実装が気になるが、ひとまず思い描いた動きをさせることができた。

cocos2d-x 3.3 WebViewを触ってみる。

cocos2d-x 3.3 (beta0)からWebViewが使えるようになったとのことで、なんの工夫もなくやってみた。 ``` bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto webView = cocos2d::experimental::ui::WebView::create(); webView->setPosition(visibleSize/2); webView->setContentSize(visibleSize); webView->loadURL("http://www.google.com"); webView->setScalesPageToFit(true); this->addChild(webView, 1); return true; } ``` ひとまずこれで表示される。 ``` setOnShouldStartLoading ``` のようなcallbackもちゃんと用意されているようなので、後で書く。