cocos2dx 3.x(精靈的碰撞檢測,點擊移動與拖動精靈)

來源:互聯網
上載者:User

標籤:cts   close   成員變數   eve   idt   返回   拖動   ccscene   collision   

 1 // 2 //  MainScene.hpp 3 //  helloworld 4 // 5 //  Created by apple on 16/9/19. 6 // 7 // 8  9 #ifndef MainScene_hpp10 #define MainScene_hpp11 12 #include <stdio.h>13 #include "cocos2d.h"14 USING_NS_CC;15 using namespace cocos2d;16 //定義一個情境類17 18 class MainScene : public cocos2d::Layer{19     20 private:21     // 成員變數(私人的)22     Size size;//注意不能用auto關鍵字23     Sprite *sprite1, *sprite2;//定義兩個成員變數的精靈(注意不能用auto關鍵字24     Label *label;//全域變數Label->顯示碰撞與未碰撞(注意不能用auto關鍵字)25 public:26     virtual bool init(); // 虛函數,傳回值為布爾類型,沒有函數27 28     static cocos2d::Scene* createScene();//static是一個類方法返回情境29     //聲明點選手勢30     virtual bool onTouchBegan(Touch *touch, Event *unused_event);31     //聲明拖動手勢32     virtual void onTouchMoved(Touch *touch, Event *unused_event);33     34     CREATE_FUNC(MainScene);35 };36 37 38 #endif /* MainScene_hpp */

 

 

 1 // 2 //  MainScene.cpp 3 //  helloworld 4 // 5 //  Created by apple on 16/9/19. 6 // 7 // 8  9 #include "MainScene.hpp"10 cocos2d::Scene * MainScene::createScene()11 {12      auto scene = Scene::create();13 //    CCScene * scene = CCScene::create();// 建立情境14     //建立層15     MainScene *layer = MainScene::create();16     scene->addChild(layer);17     return scene;18 }19 bool MainScene::init(){20     if (!Layer::init()) {21         return false;22     }23     //擷取螢幕大小24     size = Director::getInstance()->getVisibleSize();25     //auto size = Director::getInstance()->getWinSize();26     //添加一個圖片精靈27     sprite1 = Sprite::create("CloseNormal.png");28     sprite1->setPosition(Vec2(size.width/2, size.height/2));29     this->addChild(sprite1);30     31     sprite2 = Sprite::create("CloseNormal.png");32     sprite2->setPosition(Vec2(size.width*0.4, size.height/2));33     this->addChild(sprite2);34     35     label = Label::createWithSystemFont("No collision", "Marker Felt", 50);36     label->setPosition(Vec2(size.width/2, size.height*0.7));37     this->addChild(label);//直接把Label顯示在螢幕上38     39     //建立監聽事件對象40     auto listener = EventListenerTouchOneByOne::create();41     42     //定義監聽事件的回呼函數43     listener->onTouchBegan = CC_CALLBACK_2(MainScene::onTouchBegan, this);44     listener->onTouchMoved = CC_CALLBACK_2(MainScene::onTouchMoved, this);45     46     //在事件分發器中註冊47     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);48     49     return true;50 }51 52 //點擊移動精事件回調方法53 bool MainScene::onTouchBegan(Touch *touch, Event *unused_event)54 {55     //擷取觸屏位置(座標)56     Point pos = touch->getLocation();57     58     sprite2->setPosition(pos);//把點擊螢幕的觸摸點(座標)給賦值給精靈259     60     log("TouchBegan");61     62     return true;63 }64 //拖動手勢執行事件方法65 void MainScene::onTouchMoved(Touch *touch, Event *unused_event)66 {67     //擷取當前拖動手勢的座標與位置68     Point pos = touch->getLocation();69     70     sprite2->setPosition(pos);//讓精靈跟著拖動點移動71     72     //判斷兩個精靈是否相交73     if (sprite2->getBoundingBox().intersectsRect(sprite1->getBoundingBox())){    //3.0改變處74         label->setString("Collision!");//改變螢幕上Label的文字75     }else{76         label->setString("No collision");//改變螢幕上Label的文字77     78         log("TouchMoved");79     }80 }

 

cocos2dx 3.x(精靈的碰撞檢測,點擊移動與拖動精靈)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.