• cocos2dx 3.x(点击屏幕移动精灵,拖动精灵)不需要写回调函数直接实现


     1 //
     2 //  MainScene.cpp
     3 //  helloworld
     4 //
     5 //  Created by apple on 16/9/19.
     6 //
     7 //
     8 
     9 #include "MainScene.hpp"
    10 Scene * MainScene::createScene()
    11 {
    12      auto scene = Scene::create();
    13     //创建层
    14     MainScene *layer = MainScene::create();
    15     scene->addChild(layer);
    16     return scene;
    17 }
    18 bool MainScene::init(){
    19     if (!Layer::init()) {
    20         return false;
    21     }
    22     
    23     
    24     sprite = Sprite::create("hu.png");
    25     sprite ->setPosition(50, 50);
    26     sprite->setAnchorPoint(Vec2(0.5, 0.5));
    27     this->addChild(sprite);// 添加到层
    28     
    29   
    30     
    31     //声明
    32     auto listener1 = EventListenerTouchOneByOne::create();
    33     listener1->setSwallowTouches(true);
    34     
    35     //通过 lambda 表达式 直接实现触摸事件的回掉方法
    36     listener1->onTouchBegan = [](Touch* touch, Event* event){
    37         auto target = static_cast<Sprite*>(event->getCurrentTarget());
    38         
    39         Point locationInNode = target->convertToNodeSpace(touch->getLocation());
    40         Size s = target->getContentSize();
    41         Rect rect = Rect(0, 0, s.width, s.height);
    42         
    43         if (rect.containsPoint(locationInNode))
    44         {
    45             log("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y);
    46             target->setOpacity(180);//点击的时候精灵颜色变暗,255为最大值,0最小
    47             return true;
    48         }
    49         return false;
    50     };
    51     
    52     
    53     
    54     listener1->onTouchMoved = [](Touch* touch, Event* event){
    55         auto target = static_cast<Sprite*>(event->getCurrentTarget());
    56         target->setPosition(target->getPosition() + touch->getDelta());
    57     };
    58     
    59     listener1->onTouchEnded = [=](Touch* touch, Event* event){
    60         auto target = static_cast<Sprite*>(event->getCurrentTarget());
    61         log("sprite onTouchesEnded.. ");
    62         target->setOpacity(255);//手势松开时使精灵恢复原来的颜色
    63     };
    64     
    65     
    66     //将触摸事件绑定到精灵身上
    67     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, sprite);
    68     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite);
    69     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite);
    70     
    71     return true;
    72 }
  • 相关阅读:
    为MySQL的root用户设定密码
    Sublime Text 3安装Package Control失败
    从系统关机后主机仍在运行
    如何判断一个数是否是质数?
    python之lambda函数
    yum的一些命令使用方法
    NopCommerce架构分析-数据持久层
    NopCommerce架构分析-Cache的应用
    NopCommerce架构分析-源码结构和架构
    下载图片
  • 原文地址:https://www.cnblogs.com/luorende/p/5988943.html
Copyright © 2020-2023  润新知